Refactor as prep for multiple hosts
This commit is contained in:
parent
3e82609242
commit
1fc5d8b70f
11 changed files with 268 additions and 292 deletions
22
README.md
22
README.md
|
@ -62,28 +62,22 @@ Here's a brief rundown of the directory structure:
|
||||||
### Top-Level Files
|
### Top-Level Files
|
||||||
|
|
||||||
- `flake.nix`: Nix Flake configuration file.
|
- `flake.nix`: Nix Flake configuration file.
|
||||||
- `configuration.nix`: Main NixOS system configuration entry point.
|
|
||||||
- `disko.nix`: Disk and filesystem configuration.
|
|
||||||
- `hardware.nix`: Hardware-related configurations like drivers.
|
|
||||||
- `home.nix`: Configurations related to user home directories. (home-manager)
|
|
||||||
- `users.nix`: User account and privilege settings.
|
|
||||||
|
|
||||||
### `home-mods` Directory
|
#### `home-mods` Directory
|
||||||
|
|
||||||
Stores modules related to specific user applications or environments.
|
Stores modules related to specific user applications or environments.
|
||||||
|
|
||||||
- `dev/default.nix`: Developer-specific configurations.
|
#### `os-mods` Directory
|
||||||
- `firefox/default.nix`: Firefox browser settings.
|
|
||||||
- `plasma/default.nix`: KDE Plasma desktop settings.
|
|
||||||
- `virt/default.nix`: Virtualization-related settings.
|
|
||||||
|
|
||||||
### `os-mods` Directory
|
Holds system-level modules for network, virtualization, desktop etc.
|
||||||
|
|
||||||
Holds system-level modules for network, virtualization, etc.
|
#### `users` Directory
|
||||||
|
|
||||||
- `network/default.nix`: Network-related settings.
|
Holds home-manager configuration for the users listed in `users.nix`
|
||||||
- `virt/default.nix`: OS-level virtualization settings.
|
|
||||||
|
|
||||||
|
#### `systems` Directory
|
||||||
|
|
||||||
|
Holds system specific nixos configuration (e.g. hardware quirks).
|
||||||
|
|
||||||
## 🙏 Made possible by
|
## 🙏 Made possible by
|
||||||
|
|
||||||
|
|
|
@ -1,171 +0,0 @@
|
||||||
{
|
|
||||||
config,
|
|
||||||
pkgs,
|
|
||||||
inputs,
|
|
||||||
system,
|
|
||||||
...
|
|
||||||
}: {
|
|
||||||
imports = [
|
|
||||||
./hardware.nix
|
|
||||||
./os-mods/network
|
|
||||||
./os-mods/virt
|
|
||||||
];
|
|
||||||
|
|
||||||
nix = {
|
|
||||||
gc = {
|
|
||||||
automatic = true;
|
|
||||||
dates = "weekly";
|
|
||||||
options = "--delete-older-than 2w";
|
|
||||||
};
|
|
||||||
settings.auto-optimise-store = true;
|
|
||||||
package = pkgs.nixFlakes;
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
|
|
||||||
fonts.fontDir.enable = true;
|
|
||||||
fonts.fonts = with pkgs; [
|
|
||||||
emacs-all-the-icons-fonts
|
|
||||||
corefonts
|
|
||||||
vistafonts
|
|
||||||
noto-fonts
|
|
||||||
noto-fonts-cjk
|
|
||||||
noto-fonts-emoji
|
|
||||||
liberation_ttf
|
|
||||||
fira
|
|
||||||
fira-code
|
|
||||||
fira-code-symbols
|
|
||||||
mplus-outline-fonts.githubRelease
|
|
||||||
dina-font
|
|
||||||
proggyfonts
|
|
||||||
(nerdfonts.override {fonts = ["FiraCode" "DroidSansMono" "NerdFontsSymbolsOnly"];})
|
|
||||||
];
|
|
||||||
|
|
||||||
networking.hostName = "nixos-pulse";
|
|
||||||
|
|
||||||
services.fwupd.enable = true;
|
|
||||||
|
|
||||||
time.timeZone = "Europe/Berlin";
|
|
||||||
|
|
||||||
i18n = {
|
|
||||||
defaultLocale = "en_US.UTF-8";
|
|
||||||
|
|
||||||
extraLocaleSettings = {
|
|
||||||
LANG = "en_US.UTF-8";
|
|
||||||
LC_ADDRESS = "de_DE.UTF-8";
|
|
||||||
LC_COLLATE = "de_DE.UTF-8";
|
|
||||||
LC_CTYPE = "en_US.UTF-8";
|
|
||||||
LC_IDENTIFICATION = "de_DE.UTF-8";
|
|
||||||
LC_MEASUREMENT = "de_DE.UTF-8";
|
|
||||||
LC_MESSAGES = "en_US.UTF-8";
|
|
||||||
LC_MONETARY = "de_DE.UTF-8";
|
|
||||||
LC_NAME = "de_DE.UTF-8";
|
|
||||||
LC_NUMERIC = "de_DE.UTF-8";
|
|
||||||
LC_PAPER = "de_DE.UTF-8";
|
|
||||||
LC_TELEPHONE = "de_DE.UTF-8";
|
|
||||||
LC_TIME = "de_DE.UTF-8";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xserver = {
|
|
||||||
enable = true;
|
|
||||||
layout = "us";
|
|
||||||
xkbVariant = "alt-intl";
|
|
||||||
|
|
||||||
desktopManager.plasma5.enable = true;
|
|
||||||
|
|
||||||
displayManager = {
|
|
||||||
defaultSession = "plasmawayland";
|
|
||||||
|
|
||||||
sddm.enable = true;
|
|
||||||
|
|
||||||
# autoLogin = {
|
|
||||||
# enable = true;
|
|
||||||
# user = "tristand";
|
|
||||||
# };
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
services.printing.enable = true;
|
|
||||||
services.printing.drivers = with pkgs; [
|
|
||||||
gutenprint
|
|
||||||
gutenprintBin
|
|
||||||
hplipWithPlugin
|
|
||||||
brlaser
|
|
||||||
brgenml1cupswrapper
|
|
||||||
];
|
|
||||||
|
|
||||||
sound.enable = true;
|
|
||||||
hardware.bluetooth.enable = true;
|
|
||||||
hardware.pulseaudio.enable = false;
|
|
||||||
security.rtkit.enable = true;
|
|
||||||
security.sudo.wheelNeedsPassword = false;
|
|
||||||
services.pipewire = {
|
|
||||||
enable = true;
|
|
||||||
alsa.enable = true;
|
|
||||||
alsa.support32Bit = true;
|
|
||||||
pulse.enable = true;
|
|
||||||
jack.enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
|
||||||
EDITOR = "nvim";
|
|
||||||
};
|
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
|
||||||
cifs-utils
|
|
||||||
neovim
|
|
||||||
veracrypt
|
|
||||||
vim
|
|
||||||
];
|
|
||||||
|
|
||||||
programs.nix-ld.dev.enable = true;
|
|
||||||
|
|
||||||
programs.command-not-found.enable = false;
|
|
||||||
programs.nix-index-database.comma.enable = true;
|
|
||||||
programs.dconf.enable = true;
|
|
||||||
programs.fish.enable = true;
|
|
||||||
programs.gnupg.agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSSHSupport = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
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
|
|
||||||
};
|
|
||||||
|
|
||||||
services.btrfs.autoScrub.enable = true;
|
|
||||||
# For SMB
|
|
||||||
services.gvfs.enable = true;
|
|
||||||
services.avahi.enable = true;
|
|
||||||
services.avahi.nssmdns = true;
|
|
||||||
##
|
|
||||||
|
|
||||||
services.openssh.enable = true;
|
|
||||||
|
|
||||||
networking.firewall.allowedTCPPorts = [22];
|
|
||||||
# networking.firewall.allowedUDPPorts = [ ... ];
|
|
||||||
|
|
||||||
# Samba
|
|
||||||
networking.firewall.extraCommands = ''iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns'';
|
|
||||||
|
|
||||||
powerManagement.powertop.enable = true;
|
|
||||||
systemd.services.powertop.postStart = ''
|
|
||||||
HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u)
|
|
||||||
for i in $HIDDEVICES; do
|
|
||||||
echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product
|
|
||||||
echo 'on' > /sys/bus/usb/devices/$i/power/control
|
|
||||||
done
|
|
||||||
'';
|
|
||||||
|
|
||||||
# This value determines the NixOS release from which the default
|
|
||||||
# settings for stateful data, like file locations and database versions
|
|
||||||
# on your system were taken. It‘s perfectly fine and recommended to leave
|
|
||||||
# this value at the release version of the first install of this system.
|
|
||||||
# Before changing this value read the documentation for this option
|
|
||||||
# (e.g. man configuration.nix or on https://nixos.org/nixos/options.html).
|
|
||||||
system.stateVersion = "23.05"; # Did you read the comment?
|
|
||||||
}
|
|
49
flake.lock
generated
49
flake.lock
generated
|
@ -42,27 +42,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"envfs": {
|
|
||||||
"inputs": {
|
|
||||||
"flake-parts": "flake-parts",
|
|
||||||
"nixpkgs": [
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1696892863,
|
|
||||||
"narHash": "sha256-Gs8dvjM6zFqJmoKWl2CMdfavF49E29lSnvN2Q9Fdm9c=",
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "envfs",
|
|
||||||
"rev": "fe2be4f5c4885ddbbce583395ab34a7bb4daf4b7",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "Mic92",
|
|
||||||
"repo": "envfs",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-compat": {
|
"flake-compat": {
|
||||||
"flake": false,
|
"flake": false,
|
||||||
"locked": {
|
"locked": {
|
||||||
|
@ -95,27 +74,6 @@
|
||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"flake-parts": {
|
|
||||||
"inputs": {
|
|
||||||
"nixpkgs-lib": [
|
|
||||||
"envfs",
|
|
||||||
"nixpkgs"
|
|
||||||
]
|
|
||||||
},
|
|
||||||
"locked": {
|
|
||||||
"lastModified": 1673362319,
|
|
||||||
"narHash": "sha256-Pjp45Vnj7S/b3BRpZEVfdu8sqqA6nvVjvYu59okhOyI=",
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"rev": "82c16f1682cf50c01cb0280b38a1eed202b3fe9f",
|
|
||||||
"type": "github"
|
|
||||||
},
|
|
||||||
"original": {
|
|
||||||
"owner": "hercules-ci",
|
|
||||||
"repo": "flake-parts",
|
|
||||||
"type": "github"
|
|
||||||
}
|
|
||||||
},
|
|
||||||
"flake-utils": {
|
"flake-utils": {
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"systems": "systems"
|
"systems": "systems"
|
||||||
|
@ -336,11 +294,11 @@
|
||||||
},
|
},
|
||||||
"nur": {
|
"nur": {
|
||||||
"locked": {
|
"locked": {
|
||||||
"lastModified": 1697470606,
|
"lastModified": 1697496340,
|
||||||
"narHash": "sha256-TP3UN5RktQpqDVj5mA6rb1Nu4vGTnctWkbe5sef4LEw=",
|
"narHash": "sha256-u2RgKrd/54mXdJh/Iwu9KpZODZ3BsVzJFuff/2EyM3Q=",
|
||||||
"owner": "nix-community",
|
"owner": "nix-community",
|
||||||
"repo": "NUR",
|
"repo": "NUR",
|
||||||
"rev": "cc83a858d3dbf50a934a4f74fe5508ac2fa72bc5",
|
"rev": "e12ac1f3da3af8568ff715dead8a9dfdce1b95f8",
|
||||||
"type": "github"
|
"type": "github"
|
||||||
},
|
},
|
||||||
"original": {
|
"original": {
|
||||||
|
@ -404,7 +362,6 @@
|
||||||
"inputs": {
|
"inputs": {
|
||||||
"disko": "disko",
|
"disko": "disko",
|
||||||
"emacs-overlay": "emacs-overlay",
|
"emacs-overlay": "emacs-overlay",
|
||||||
"envfs": "envfs",
|
|
||||||
"home-manager": "home-manager",
|
"home-manager": "home-manager",
|
||||||
"nix-index-database": "nix-index-database",
|
"nix-index-database": "nix-index-database",
|
||||||
"nix-ld": "nix-ld",
|
"nix-ld": "nix-ld",
|
||||||
|
|
90
flake.nix
90
flake.nix
|
@ -49,25 +49,31 @@
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
inputs.home-manager.follows = "home-manager";
|
inputs.home-manager.follows = "home-manager";
|
||||||
};
|
};
|
||||||
envfs = {
|
|
||||||
url = "github:Mic92/envfs";
|
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
|
||||||
};
|
|
||||||
nix-ld = {
|
nix-ld = {
|
||||||
url = "github:Mic92/nix-ld";
|
url = "github:Mic92/nix-ld";
|
||||||
inputs.nixpkgs.follows = "nixpkgs";
|
inputs.nixpkgs.follows = "nixpkgs";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {self, nixpkgs, ...}@inputs: let
|
outputs = {
|
||||||
|
self,
|
||||||
|
nixpkgs,
|
||||||
|
nixpkgs-unstable,
|
||||||
|
home-manager,
|
||||||
|
emacs-overlay,
|
||||||
|
nur,
|
||||||
|
nix-index-database,
|
||||||
|
disko,
|
||||||
|
...
|
||||||
|
} @ inputs: let
|
||||||
system = "x86_64-linux";
|
system = "x86_64-linux";
|
||||||
unstable-pkgs = import inputs.nixpkgs-unstable pkgs-args;
|
unstable-pkgs = import nixpkgs-unstable pkgs-args;
|
||||||
unstable-overlay = final: prev: {
|
unstable-overlay = final: prev: {
|
||||||
unstable = unstable-pkgs.pkgs;
|
unstable = unstable-pkgs.pkgs;
|
||||||
};
|
};
|
||||||
overlays = [
|
overlays = [
|
||||||
inputs.emacs-overlay.overlay
|
|
||||||
unstable-overlay
|
unstable-overlay
|
||||||
|
emacs-overlay.overlay
|
||||||
];
|
];
|
||||||
pkgs-args = {
|
pkgs-args = {
|
||||||
system = system;
|
system = system;
|
||||||
|
@ -77,61 +83,59 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
pkgs = import nixpkgs pkgs-args;
|
pkgs = import nixpkgs pkgs-args;
|
||||||
|
hmModules = [
|
||||||
|
nix-index-database.hmModules.nix-index
|
||||||
|
nur.hmModules.nur
|
||||||
|
inputs.plasma-manager.homeManagerModules.plasma-manager
|
||||||
|
];
|
||||||
|
osModules = [
|
||||||
|
disko.nixosModules.disko
|
||||||
|
home-manager.nixosModules.home-manager
|
||||||
|
nix-index-database.nixosModules.nix-index
|
||||||
|
nur.nixosModules.nur
|
||||||
|
inputs.nix-ld.nixosModules.nix-ld
|
||||||
|
inputs.tuxedo-nixos.nixosModules.default
|
||||||
|
];
|
||||||
|
args = {
|
||||||
|
inherit inputs;
|
||||||
|
inherit system;
|
||||||
|
};
|
||||||
in {
|
in {
|
||||||
formatter = {
|
formatter = {
|
||||||
${system} = pkgs.alejandra;
|
${system} = pkgs.alejandra;
|
||||||
};
|
};
|
||||||
diskoConfigurations = {
|
diskoConfigurations = {
|
||||||
nixos-pulse = import ./disko.nix;
|
nixos-pulse = import ./systems/nixos-pulse/disko.nix;
|
||||||
};
|
};
|
||||||
homeConfigurations = {
|
homeConfigurations = {
|
||||||
"tristand" = inputs.home-manager.lib.homeManagerConfiguration {
|
"tristand" = home-manager.lib.homeManagerConfiguration {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
|
|
||||||
modules = [
|
modules =
|
||||||
./home.nix
|
[
|
||||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
./users/tristand.nix
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
|
||||||
inputs.nur.hmModules.nur
|
|
||||||
{
|
{
|
||||||
_module.args.inputs = inputs;
|
_module = {inherit args;};
|
||||||
_module.args.system = system;
|
|
||||||
}
|
}
|
||||||
];
|
]
|
||||||
|
++ hmModules;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
nixos-pulse = inputs.nixpkgs.lib.nixosSystem {
|
nixos-pulse = nixpkgs.lib.nixosSystem {
|
||||||
modules = [
|
modules =
|
||||||
./configuration.nix
|
[
|
||||||
./users.nix
|
./systems/nixos-pulse
|
||||||
./disko.nix
|
|
||||||
inputs.disko.nixosModules.disko
|
|
||||||
inputs.envfs.nixosModules.envfs
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
inputs.nix-index-database.nixosModules.nix-index
|
|
||||||
inputs.nix-ld.nixosModules.nix-ld
|
|
||||||
inputs.nur.nixosModules.nur
|
|
||||||
inputs.tuxedo-nixos.nixosModules.default
|
|
||||||
{
|
{
|
||||||
_module.args.inputs = inputs;
|
_module = {inherit args;};
|
||||||
_module.args.system = system;
|
|
||||||
nix.registry.nixpkgs.flake = inputs.nixpkgs;
|
|
||||||
|
|
||||||
|
nix.registry.nixpkgs.flake = nixpkgs;
|
||||||
nixpkgs.pkgs = pkgs;
|
nixpkgs.pkgs = pkgs;
|
||||||
|
|
||||||
home-manager.useUserPackages = true;
|
home-manager.sharedModules = hmModules;
|
||||||
home-manager.useGlobalPkgs = true;
|
|
||||||
home-manager.sharedModules = [
|
|
||||||
inputs.plasma-manager.homeManagerModules.plasma-manager
|
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
|
||||||
inputs.nur.hmModules.nur
|
|
||||||
];
|
|
||||||
|
|
||||||
hardware.tuxedo-control-center.enable = true;
|
|
||||||
hardware.tuxedo-control-center.package = inputs.tuxedo-nixos.packages.${system}.default;
|
|
||||||
}
|
}
|
||||||
];
|
]
|
||||||
|
++ osModules;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -14,7 +14,7 @@
|
||||||
personalDoomConfSrc = builtins.fetchGit {
|
personalDoomConfSrc = builtins.fetchGit {
|
||||||
url = "https://git.vlt81.de/tristan/doom";
|
url = "https://git.vlt81.de/tristan/doom";
|
||||||
ref = "main";
|
ref = "main";
|
||||||
rev = "3973c2a97e549640f14ed073bbb8102ebd8a839b";
|
rev = "e6d22f794c68a5f3ac56861e7e2ed6642cdef16a";
|
||||||
};
|
};
|
||||||
in {
|
in {
|
||||||
xdg.enable = true;
|
xdg.enable = true;
|
||||||
|
|
81
os-mods/base/default.nix
Normal file
81
os-mods/base/default.nix
Normal file
|
@ -0,0 +1,81 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
nix = {
|
||||||
|
gc = {
|
||||||
|
automatic = true;
|
||||||
|
dates = "weekly";
|
||||||
|
options = "--delete-older-than 2w";
|
||||||
|
};
|
||||||
|
settings.auto-optimise-store = true;
|
||||||
|
package = pkgs.nixFlakes;
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
services.fwupd.enable = true;
|
||||||
|
|
||||||
|
# locale
|
||||||
|
time.timeZone = "Europe/Berlin";
|
||||||
|
|
||||||
|
i18n = {
|
||||||
|
defaultLocale = "en_US.UTF-8";
|
||||||
|
|
||||||
|
extraLocaleSettings = {
|
||||||
|
LANG = "en_US.UTF-8";
|
||||||
|
LC_ADDRESS = "de_DE.UTF-8";
|
||||||
|
LC_COLLATE = "de_DE.UTF-8";
|
||||||
|
LC_CTYPE = "en_US.UTF-8";
|
||||||
|
LC_IDENTIFICATION = "de_DE.UTF-8";
|
||||||
|
LC_MEASUREMENT = "de_DE.UTF-8";
|
||||||
|
LC_MESSAGES = "en_US.UTF-8";
|
||||||
|
LC_MONETARY = "de_DE.UTF-8";
|
||||||
|
LC_NAME = "de_DE.UTF-8";
|
||||||
|
LC_NUMERIC = "de_DE.UTF-8";
|
||||||
|
LC_PAPER = "de_DE.UTF-8";
|
||||||
|
LC_TELEPHONE = "de_DE.UTF-8";
|
||||||
|
LC_TIME = "de_DE.UTF-8";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
####################
|
||||||
|
|
||||||
|
security.rtkit.enable = true;
|
||||||
|
security.sudo.wheelNeedsPassword = false;
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
EDITOR = "nvim";
|
||||||
|
};
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
neovim # editor
|
||||||
|
veracrypt
|
||||||
|
vim # fallback ed
|
||||||
|
];
|
||||||
|
|
||||||
|
# nix convenience
|
||||||
|
services.envfs.enable = true;
|
||||||
|
programs.nix-ld.dev.enable = true;
|
||||||
|
programs.command-not-found.enable = false;
|
||||||
|
programs.nix-index-database.comma.enable = true;
|
||||||
|
###################
|
||||||
|
|
||||||
|
programs.fish.enable = true;
|
||||||
|
programs.gnupg.agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSSHSupport = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
services.openssh.enable = true;
|
||||||
|
|
||||||
|
# For SMB ####
|
||||||
|
services.gvfs.enable = true;
|
||||||
|
services.avahi.enable = true;
|
||||||
|
services.avahi.nssmdns = true;
|
||||||
|
|
||||||
|
# netbios dns
|
||||||
|
networking.firewall.extraCommands = ''iptables -t raw -A OUTPUT -p udp -m udp --dport 137 -j CT --helper netbios-ns'';
|
||||||
|
##############
|
||||||
|
}
|
83
os-mods/desktop/default.nix
Normal file
83
os-mods/desktop/default.nix
Normal file
|
@ -0,0 +1,83 @@
|
||||||
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
...
|
||||||
|
}: {
|
||||||
|
programs.dconf.enable = true;
|
||||||
|
|
||||||
|
# fonts
|
||||||
|
|
||||||
|
fonts.fontDir.enable = true;
|
||||||
|
fonts.fonts = with pkgs; [
|
||||||
|
emacs-all-the-icons-fonts
|
||||||
|
corefonts
|
||||||
|
vistafonts
|
||||||
|
noto-fonts
|
||||||
|
noto-fonts-cjk
|
||||||
|
noto-fonts-emoji
|
||||||
|
liberation_ttf
|
||||||
|
fira
|
||||||
|
fira-code
|
||||||
|
fira-code-symbols
|
||||||
|
mplus-outline-fonts.githubRelease
|
||||||
|
dina-font
|
||||||
|
proggyfonts
|
||||||
|
(nerdfonts.override {fonts = ["FiraCode" "DroidSansMono" "NerdFontsSymbolsOnly"];})
|
||||||
|
];
|
||||||
|
|
||||||
|
# Desktop env
|
||||||
|
services.xserver = {
|
||||||
|
enable = true;
|
||||||
|
layout = "us";
|
||||||
|
xkbVariant = "alt-intl";
|
||||||
|
|
||||||
|
desktopManager.plasma5.enable = true;
|
||||||
|
|
||||||
|
displayManager = {
|
||||||
|
defaultSession = "plasmawayland";
|
||||||
|
|
||||||
|
sddm.enable = true;
|
||||||
|
|
||||||
|
# autoLogin = {
|
||||||
|
# enable = true;
|
||||||
|
# user = "tristand";
|
||||||
|
# };
|
||||||
|
};
|
||||||
|
};
|
||||||
|
#########################
|
||||||
|
|
||||||
|
## audio
|
||||||
|
sound.enable = true;
|
||||||
|
hardware.bluetooth.enable = true;
|
||||||
|
hardware.pulseaudio.enable = false;
|
||||||
|
services.pipewire = {
|
||||||
|
enable = true;
|
||||||
|
alsa.enable = true;
|
||||||
|
alsa.support32Bit = true;
|
||||||
|
pulse.enable = true;
|
||||||
|
jack.enable = true;
|
||||||
|
};
|
||||||
|
#########
|
||||||
|
|
||||||
|
## printing
|
||||||
|
|
||||||
|
services.printing.enable = true;
|
||||||
|
services.printing.drivers = with pkgs; [
|
||||||
|
gutenprint
|
||||||
|
gutenprintBin
|
||||||
|
hplipWithPlugin
|
||||||
|
brlaser
|
||||||
|
brgenml1cupswrapper
|
||||||
|
];
|
||||||
|
|
||||||
|
environment.systemPackages = with pkgs; [
|
||||||
|
cifs-utils
|
||||||
|
];
|
||||||
|
|
||||||
|
programs.steam = {
|
||||||
|
enable = true;
|
||||||
|
remotePlay.openFirewall = true;
|
||||||
|
dedicatedServer.openFirewall = true;
|
||||||
|
};
|
||||||
|
}
|
|
@ -4,20 +4,28 @@
|
||||||
pkgs,
|
pkgs,
|
||||||
modulesPath,
|
modulesPath,
|
||||||
system,
|
system,
|
||||||
|
inputs,
|
||||||
...
|
...
|
||||||
}: {
|
}: {
|
||||||
imports = [
|
imports = [
|
||||||
(modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
|
../../os-mods/base
|
||||||
|
../../os-mods/desktop
|
||||||
|
../../os-mods/network
|
||||||
|
../../os-mods/virt
|
||||||
|
../../users
|
||||||
|
./disko.nix
|
||||||
];
|
];
|
||||||
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
zramSwap.enable = true;
|
nixpkgs.hostPlatform = lib.mkDefault system;
|
||||||
|
|
||||||
boot = {
|
boot = {
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
loader = {
|
loader = {
|
||||||
systemd-boot = {
|
systemd-boot = {
|
||||||
enable = true;
|
enable = true;
|
||||||
configurationLimit = 20;
|
configurationLimit = 32;
|
||||||
};
|
};
|
||||||
efi.canTouchEfiVariables = true;
|
efi.canTouchEfiVariables = true;
|
||||||
};
|
};
|
||||||
|
@ -32,9 +40,11 @@
|
||||||
extraModulePackages = [];
|
extraModulePackages = [];
|
||||||
};
|
};
|
||||||
|
|
||||||
|
services.btrfs.autoScrub.enable = true;
|
||||||
services.xserver.videoDrivers = ["amdgpu"];
|
services.xserver.videoDrivers = ["amdgpu"];
|
||||||
|
|
||||||
networking = {
|
networking = {
|
||||||
|
hostName = "nixos-pulse";
|
||||||
useDHCP = lib.mkDefault true;
|
useDHCP = lib.mkDefault true;
|
||||||
interfaces = {
|
interfaces = {
|
||||||
enp5s0f4u1u1c2 = {
|
enp5s0f4u1u1c2 = {
|
||||||
|
@ -70,9 +80,21 @@
|
||||||
ACTION=="remove", KERNEL=="enp5s0f4u1u1c2", RUN+="${pkgs.systemd}/bin/systemctl stop network-addresses-enp5s0f4u1u1c2.service"
|
ACTION=="remove", KERNEL=="enp5s0f4u1u1c2", RUN+="${pkgs.systemd}/bin/systemctl stop network-addresses-enp5s0f4u1u1c2.service"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
nixpkgs.hostPlatform = lib.mkDefault system;
|
# energy saving stuff
|
||||||
|
powerManagement.powertop.enable = true;
|
||||||
|
systemd.services.powertop.postStart = ''
|
||||||
|
HIDDEVICES=$(ls /sys/bus/usb/drivers/usbhid | grep -oE '^[0-9]+-[0-9\.]+' | sort -u)
|
||||||
|
for i in $HIDDEVICES; do
|
||||||
|
echo -n "Enabling " | cat - /sys/bus/usb/devices/$i/product
|
||||||
|
echo 'on' > /sys/bus/usb/devices/$i/power/control
|
||||||
|
done
|
||||||
|
'';
|
||||||
|
|
||||||
hardware = {
|
hardware = {
|
||||||
|
tuxedo-control-center = {
|
||||||
|
enable = true;
|
||||||
|
package = inputs.tuxedo-nixos.packages.${system}.default;
|
||||||
|
};
|
||||||
opengl = {
|
opengl = {
|
||||||
driSupport = true;
|
driSupport = true;
|
||||||
driSupport32Bit = true;
|
driSupport32Bit = true;
|
||||||
|
@ -88,4 +110,6 @@
|
||||||
systemd.tmpfiles.rules = [
|
systemd.tmpfiles.rules = [
|
||||||
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
|
"L+ /opt/rocm/hip - - - - ${pkgs.hip}"
|
||||||
];
|
];
|
||||||
|
|
||||||
|
zramSwap.enable = true;
|
||||||
}
|
}
|
|
@ -14,10 +14,14 @@
|
||||||
hashedPassword = "$6$Wj.XY8JgH5EWuog4$HnbtPJXDEqKXFrzkPVEjih3PytcpBCrkfL7TAwkXd0IFced7kGMlZNliNsAqQ3XqfyUzAYiiKTIqoPVJEk.s..";
|
hashedPassword = "$6$Wj.XY8JgH5EWuog4$HnbtPJXDEqKXFrzkPVEjih3PytcpBCrkfL7TAwkXd0IFced7kGMlZNliNsAqQ3XqfyUzAYiiKTIqoPVJEk.s..";
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.tristand = import ./home.nix {
|
home-manager = {
|
||||||
|
useUserPackages = true;
|
||||||
|
useGlobalPkgs = true;
|
||||||
|
users.tristand = import ./tristand.nix {
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit config;
|
inherit config;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit system;
|
inherit system;
|
||||||
};
|
};
|
||||||
|
};
|
||||||
}
|
}
|
|
@ -12,10 +12,10 @@
|
||||||
wallpaperPath = "${wallpaper}/share/wallpapers/nixos-wallpaper.png";
|
wallpaperPath = "${wallpaper}/share/wallpapers/nixos-wallpaper.png";
|
||||||
in {
|
in {
|
||||||
imports = [
|
imports = [
|
||||||
./home-mods/dev
|
../home-mods/dev
|
||||||
./home-mods/firefox
|
../home-mods/firefox
|
||||||
./home-mods/plasma
|
../home-mods/plasma
|
||||||
./home-mods/virt
|
../home-mods/virt
|
||||||
];
|
];
|
||||||
|
|
||||||
home.file.".background".source = wallpaperPath;
|
home.file.".background".source = wallpaperPath;
|
Loading…
Add table
Reference in a new issue