Mass refactor
This commit is contained in:
parent
0b5df1452e
commit
02f264263c
25
default.nix
25
default.nix
@ -1,25 +0,0 @@
|
|||||||
# This is balsoft's configuration file.
|
|
||||||
#
|
|
||||||
# https://github.com/balsoft/nixos-config
|
|
||||||
#
|
|
||||||
# This is main nixos configuration
|
|
||||||
# To use this configuration:
|
|
||||||
# 1. Add your own secret.nix and hardware-configuration/`hostname`.nix to this folder
|
|
||||||
# 2. Set the hostname to the desired one
|
|
||||||
# 3. `sudo nixos-rebuild switch --flake .`
|
|
||||||
# 4. Log in to application and services where neccesary
|
|
||||||
|
|
||||||
{ config, pkgs, lib, inputs, name, ... }:
|
|
||||||
rec {
|
|
||||||
imports = [
|
|
||||||
(./hardware-configuration + "/${name}.nix")
|
|
||||||
inputs.home-manager.nixosModules.home-manager
|
|
||||||
(import ./modules device)
|
|
||||||
];
|
|
||||||
|
|
||||||
home-manager.users.balsoft.home.stateVersion = "20.09";
|
|
||||||
|
|
||||||
device = name;
|
|
||||||
|
|
||||||
system.stateVersion = "18.03";
|
|
||||||
}
|
|
42
flake.nix
42
flake.nix
@ -3,28 +3,28 @@
|
|||||||
"A collection of crap, hacks and copy-paste to make my localhosts boot";
|
"A collection of crap, hacks and copy-paste to make my localhosts boot";
|
||||||
|
|
||||||
inputs = {
|
inputs = {
|
||||||
nixpkgs.url = github:nixos/nixpkgs/nixos-unstable;
|
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
|
||||||
# nixpkgs-mesa.url = github:nixos/nixpkgs-channels/bdac777becdbb8780c35be4f552c9d4518fe0bdb;
|
# nixpkgs-mesa.url = github:nixos/nixpkgs-channels/bdac777becdbb8780c35be4f552c9d4518fe0bdb;
|
||||||
lambda-launcher.url = github:balsoft/lambda-launcher;
|
lambda-launcher.url = "github:balsoft/lambda-launcher";
|
||||||
NUR = {
|
NUR = {
|
||||||
url = github:nix-community/NUR;
|
url = "github:nix-community/NUR";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
base16-unclaimed-schemes = {
|
base16-unclaimed-schemes = {
|
||||||
url = github:chriskempson/base16-unclaimed-schemes;
|
url = "github:chriskempson/base16-unclaimed-schemes";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
home-manager.url = github:rycee/home-manager;
|
home-manager.url = "github:rycee/home-manager";
|
||||||
materia-theme = {
|
materia-theme = {
|
||||||
url = github:nana-4/materia-theme;
|
url = "github:nana-4/materia-theme";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nixpkgs-old = {
|
nixpkgs-old = {
|
||||||
url = github:nixos/nixpkgs/nixos-19.09;
|
url = "github:nixos/nixpkgs/nixos-19.09";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
weechat-scripts = {
|
weechat-scripts = {
|
||||||
url = github:weechat/scripts;
|
url = "github:weechat/scripts";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
simple-nixos-mailserver = {
|
simple-nixos-mailserver = {
|
||||||
@ -32,11 +32,11 @@
|
|||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
nixpkgs-wayland = {
|
nixpkgs-wayland = {
|
||||||
url = github:colemickens/nixpkgs-wayland;
|
url = "github:colemickens/nixpkgs-wayland";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
weechat-notify-send = {
|
weechat-notify-send = {
|
||||||
url = github:s3rvac/weechat-notify-send;
|
url = "github:s3rvac/weechat-notify-send";
|
||||||
flake = false;
|
flake = false;
|
||||||
};
|
};
|
||||||
yt-utilities = {
|
yt-utilities = {
|
||||||
@ -44,20 +44,28 @@
|
|||||||
url = "ssh://git@github.com/serokell/yt-utilities";
|
url = "ssh://git@github.com/serokell/yt-utilities";
|
||||||
ref = "flake";
|
ref = "flake";
|
||||||
};
|
};
|
||||||
nixos-fhs-compat.url = github:balsoft/nixos-fhs-compat;
|
nixos-fhs-compat.url = "github:balsoft/nixos-fhs-compat";
|
||||||
simple-osd-daemons.url = github:balsoft/simple-osd-daemons;
|
simple-osd-daemons.url = "github:balsoft/simple-osd-daemons";
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = { nixpkgs, nix, self, ... }@inputs: {
|
outputs = { nixpkgs, nix, self, ... }@inputs: {
|
||||||
|
nixosModules = import ./modules;
|
||||||
|
|
||||||
|
nixosProfiles = import ./profiles;
|
||||||
|
|
||||||
nixosConfigurations = with nixpkgs.lib;
|
nixosConfigurations = with nixpkgs.lib;
|
||||||
let
|
let
|
||||||
hosts = map (fname: builtins.head (builtins.match "(.*)\\.nix" fname))
|
hosts = builtins.attrNames (builtins.readDir ./machines);
|
||||||
(builtins.attrNames (builtins.readDir ./hardware-configuration));
|
|
||||||
mkHost = name:
|
mkHost = name:
|
||||||
nixosSystem {
|
nixosSystem {
|
||||||
system = "x86_64-linux";
|
system = builtins.readFile (./machines + "/${name}/system");
|
||||||
modules = [ (import ./default.nix) ];
|
modules = [
|
||||||
specialArgs = { inherit inputs name; };
|
(import (./machines + "/${name}"))
|
||||||
|
{
|
||||||
|
device = name;
|
||||||
|
}
|
||||||
|
];
|
||||||
|
specialArgs = { inherit inputs; };
|
||||||
};
|
};
|
||||||
in genAttrs hosts mkHost;
|
in genAttrs hosts mkHost;
|
||||||
|
|
||||||
|
@ -1,3 +0,0 @@
|
|||||||
{
|
|
||||||
|
|
||||||
}
|
|
18
machines/AMD-Workstation/default.nix
Normal file
18
machines/AMD-Workstation/default.nix
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [ ./hardware-configuration.nix inputs.self.nixosProfiles.desktop ];
|
||||||
|
deviceSpecific.devInfo = {
|
||||||
|
cpu = {
|
||||||
|
vendor = "amd";
|
||||||
|
clock = 4200;
|
||||||
|
cores = 8;
|
||||||
|
};
|
||||||
|
drive = {
|
||||||
|
type = "ssd";
|
||||||
|
speed = 6000;
|
||||||
|
size = 250;
|
||||||
|
};
|
||||||
|
bigScreen = true;
|
||||||
|
ram = 32;
|
||||||
|
};
|
||||||
|
services.apcupsd.enable = true;
|
||||||
|
}
|
1
machines/AMD-Workstation/system
Normal file
1
machines/AMD-Workstation/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
x86_64-linux
|
28
machines/RasPi-Server/default.nix
Normal file
28
machines/RasPi-Server/default.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = with inputs.self.nixosModules; [
|
||||||
|
./hardware-configuration.nix
|
||||||
|
inputs.self.nixosProfiles.server
|
||||||
|
gitea
|
||||||
|
jitsi
|
||||||
|
mailserver
|
||||||
|
matrix-synapse
|
||||||
|
minidlna
|
||||||
|
nextcloud
|
||||||
|
nginx
|
||||||
|
vsftpd
|
||||||
|
];
|
||||||
|
deviceSpecific.devInfo = {
|
||||||
|
cpu = {
|
||||||
|
vendor = "broadcom";
|
||||||
|
clock = 4200;
|
||||||
|
cores = 8;
|
||||||
|
};
|
||||||
|
drive = {
|
||||||
|
type = "ssd";
|
||||||
|
speed = 6000;
|
||||||
|
size = 250;
|
||||||
|
};
|
||||||
|
bigScreen = true;
|
||||||
|
ram = 32;
|
||||||
|
};
|
||||||
|
}
|
24
machines/RasPi-Server/hardware-configuration.nix
Normal file
24
machines/RasPi-Server/hardware-configuration.nix
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
# 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 + "/installer/scan/not-detected.nix") ];
|
||||||
|
|
||||||
|
boot.initrd.availableKernelModules = [ ];
|
||||||
|
boot.initrd.kernelModules = [ ];
|
||||||
|
boot.kernelModules = [ ];
|
||||||
|
boot.extraModulePackages = [ ];
|
||||||
|
|
||||||
|
fileSystems."/" = {
|
||||||
|
device = "/dev/disk/by-uuid/44444444-4444-4444-8888-888888888888";
|
||||||
|
fsType = "ext4";
|
||||||
|
};
|
||||||
|
|
||||||
|
swapDevices = [ ];
|
||||||
|
|
||||||
|
powerManagement.cpuFreqGovernor = lib.mkDefault "ondemand";
|
||||||
|
# high-resolution display
|
||||||
|
hardware.video.hidpi.enable = lib.mkDefault true;
|
||||||
|
}
|
1
machines/RasPi-Server/system
Normal file
1
machines/RasPi-Server/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
aarch64-linux
|
17
machines/T420-Laptop/default.nix
Normal file
17
machines/T420-Laptop/default.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [ ./hardware-configuration.nix inputs.self.nixosProfiles.desktop ];
|
||||||
|
deviceSpecific.devInfo = {
|
||||||
|
legacy = false;
|
||||||
|
cpu = {
|
||||||
|
vendor = "intel";
|
||||||
|
clock = 2500;
|
||||||
|
cores = 2;
|
||||||
|
};
|
||||||
|
drive = {
|
||||||
|
type = "ssd";
|
||||||
|
speed = 1000;
|
||||||
|
size = 120;
|
||||||
|
};
|
||||||
|
ram = 8;
|
||||||
|
};
|
||||||
|
}
|
1
machines/T420-Laptop/system
Normal file
1
machines/T420-Laptop/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
x86_64-linux
|
75
machines/T490s-Laptop/default.nix
Normal file
75
machines/T490s-Laptop/default.nix
Normal file
@ -0,0 +1,75 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [ ./hardware-configuration.nix inputs.self.nixosProfiles.desktop ];
|
||||||
|
deviceSpecific.devInfo = {
|
||||||
|
cpu = {
|
||||||
|
vendor = "intel";
|
||||||
|
clock = 4600;
|
||||||
|
cores = 4;
|
||||||
|
};
|
||||||
|
drive = {
|
||||||
|
type = "ssd";
|
||||||
|
speed = 2000;
|
||||||
|
size = 250;
|
||||||
|
};
|
||||||
|
ram = 16;
|
||||||
|
};
|
||||||
|
services.throttled = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = ''
|
||||||
|
[GENERAL]
|
||||||
|
# Enable or disable the script execution
|
||||||
|
Enabled: True
|
||||||
|
# SYSFS path for checking if the system is running on AC power
|
||||||
|
Sysfs_Power_Path: /sys/class/power_supply/AC*/online
|
||||||
|
|
||||||
|
## Settings to apply while connected to Battery power
|
||||||
|
[BATTERY]
|
||||||
|
# Update the registers every this many seconds
|
||||||
|
Update_Rate_s: 30
|
||||||
|
# Max package power for time window #1
|
||||||
|
PL1_Tdp_W: 29
|
||||||
|
# Time window #1 duration
|
||||||
|
PL1_Duration_s: 28
|
||||||
|
# Max package power for time window #2
|
||||||
|
PL2_Tdp_W: 44
|
||||||
|
# Time window #2 duration
|
||||||
|
PL2_Duration_S: 0.002
|
||||||
|
# Max allowed temperature before throttling
|
||||||
|
Trip_Temp_C: 85
|
||||||
|
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
|
||||||
|
cTDP: 1
|
||||||
|
|
||||||
|
## Settings to apply while connected to AC power
|
||||||
|
[AC]
|
||||||
|
# Update the registers every this many seconds
|
||||||
|
Update_Rate_s: 5
|
||||||
|
# Max package power for time window #1
|
||||||
|
PL1_Tdp_W: 44
|
||||||
|
# Time window #1 duration
|
||||||
|
PL1_Duration_s: 28
|
||||||
|
# Max package power for time window #2
|
||||||
|
PL2_Tdp_W: 44
|
||||||
|
# Time window #2 duration
|
||||||
|
PL2_Duration_S: 0.002
|
||||||
|
# Max allowed temperature before throttling
|
||||||
|
Trip_Temp_C: 95
|
||||||
|
# Set HWP energy performance hints to 'performance' on high load (EXPERIMENTAL)
|
||||||
|
HWP_Mode: True
|
||||||
|
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
|
||||||
|
cTDP: 2
|
||||||
|
|
||||||
|
[UNDERVOLT]
|
||||||
|
# CPU core voltage offset (mV)
|
||||||
|
CORE: -200
|
||||||
|
# Integrated GPU voltage offset (mV)
|
||||||
|
GPU: -60
|
||||||
|
# CPU cache voltage offset (mV)
|
||||||
|
CACHE: -50
|
||||||
|
# System Agent voltage offset (mV)
|
||||||
|
UNCORE: 0
|
||||||
|
# Analog I/O voltage offset (mV)
|
||||||
|
ANALOGIO: 0
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
1
machines/T490s-Laptop/system
Normal file
1
machines/T490s-Laptop/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
x86_64-linux
|
19
machines/X2100-Laptop/default.nix
Normal file
19
machines/X2100-Laptop/default.nix
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [ ./hardware-configuration.nix inputs.self.nixosProfiles.desktop ];
|
||||||
|
deviceSpecific.devInfo = {
|
||||||
|
cpu = {
|
||||||
|
vendor = "intel";
|
||||||
|
clock = 4800;
|
||||||
|
cores = 4;
|
||||||
|
};
|
||||||
|
drive = {
|
||||||
|
type = "ssd";
|
||||||
|
speed = 6000;
|
||||||
|
size = 256;
|
||||||
|
};
|
||||||
|
ram = 16;
|
||||||
|
};
|
||||||
|
boot.extraModprobeConfig = ''
|
||||||
|
options iwlwifi bt_coex_active=0
|
||||||
|
'';
|
||||||
|
}
|
1
machines/X2100-Laptop/system
Normal file
1
machines/X2100-Laptop/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
x86_64-linux
|
@ -1,6 +1,7 @@
|
|||||||
{ modulesPath, lib, ... }: {
|
{ modulesPath, lib, inputs, ... }: {
|
||||||
imports = [
|
imports = [
|
||||||
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
"${modulesPath}/installer/cd-dvd/installation-cd-minimal.nix"
|
||||||
|
inputs.self.nixosProfiles.base
|
||||||
];
|
];
|
||||||
networking.wireless.enable = lib.mkForce false;
|
networking.wireless.enable = lib.mkForce false;
|
||||||
services.openssh.permitRootLogin = lib.mkForce "no";
|
services.openssh.permitRootLogin = lib.mkForce "no";
|
1
machines/iso-image/system
Normal file
1
machines/iso-image/system
Normal file
@ -0,0 +1 @@
|
|||||||
|
x86_64-linux
|
@ -43,6 +43,12 @@ with import ../support.nix { inherit lib config; }; {
|
|||||||
desktop = "gnumeric";
|
desktop = "gnumeric";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
EDITOR = config.defaultApplications.editor.cmd;
|
||||||
|
VISUAL = config.defaultApplications.editor.cmd;
|
||||||
|
};
|
||||||
|
|
||||||
home-manager.users.balsoft.xdg.mimeApps = {
|
home-manager.users.balsoft.xdg.mimeApps = {
|
||||||
enable = true;
|
enable = true;
|
||||||
defaultApplications =
|
defaultApplications =
|
||||||
|
28
modules/boot.nix
Normal file
28
modules/boot.nix
Normal file
@ -0,0 +1,28 @@
|
|||||||
|
{ lib, pkgs, config, ... }: {
|
||||||
|
boot = {
|
||||||
|
loader.timeout = 1;
|
||||||
|
|
||||||
|
loader.systemd-boot.enable = lib.mkIf (pkgs.system == "x86_64-linux") true;
|
||||||
|
|
||||||
|
# loader.raspberryPi = lib.mkIf (pkgs.system == "aarch64-linux") {
|
||||||
|
# enable = true;
|
||||||
|
# version = 4;
|
||||||
|
# };
|
||||||
|
|
||||||
|
loader.grub.enable = false;
|
||||||
|
|
||||||
|
# kernelParams = [ "quiet" "scsi_mod.use_blk_mq=1" "modeset" "nofb" ]
|
||||||
|
# ++ lib.optional (pkgs.system == "x86_64-linux") [
|
||||||
|
# "rd.systemd.show_status=auto"
|
||||||
|
# "rd.udev.log_priority=3"
|
||||||
|
# "pti=off"
|
||||||
|
# "spectre_v2=off"
|
||||||
|
# ];
|
||||||
|
|
||||||
|
kernelPackages = pkgs.linuxPackages_latest;
|
||||||
|
|
||||||
|
consoleLogLevel = 3;
|
||||||
|
kernel.sysctl."vm.swappiness" = 0;
|
||||||
|
kernel.sysctl."kernel/sysrq" = 1;
|
||||||
|
};
|
||||||
|
}
|
@ -1,46 +1,55 @@
|
|||||||
device:
|
builtins.listToAttrs (builtins.map (path: {
|
||||||
{ pkgs, lib, ... }: {
|
name = builtins.head (let
|
||||||
imports = [
|
b = builtins.baseNameOf path;
|
||||||
./applications/packages.nix
|
m = builtins.match "(.*)\\.nix" b;
|
||||||
./applications/emacs
|
in if isNull m then [ b ] else m);
|
||||||
./applications/alacritty.nix
|
value = import path;
|
||||||
./applications/geary.nix
|
}) [
|
||||||
./applications/weechat.nix
|
./applications.nix
|
||||||
./applications/okular.nix
|
./applications/alacritty.nix
|
||||||
./applications/yt-utilities.nix
|
./applications/emacs
|
||||||
./applications/firefox.nix
|
./applications/firefox.nix
|
||||||
./workspace/sway
|
./applications/geary.nix
|
||||||
./workspace/i3blocks
|
./applications/okular.nix
|
||||||
./workspace/zsh.nix
|
./applications/packages.nix
|
||||||
./workspace/gtk.nix
|
./applications/weechat.nix
|
||||||
./workspace/gnome3
|
./applications/yt-utilities.nix
|
||||||
./workspace/misc.nix
|
./boot.nix
|
||||||
./workspace/kde
|
./devices.nix
|
||||||
./workspace/ssh.nix
|
./hardware.nix
|
||||||
./workspace/locale.nix
|
./network.nix
|
||||||
./workspace/fonts.nix
|
./nix.nix
|
||||||
./workspace/light.nix
|
./overlay.nix
|
||||||
./workspace/mako.nix
|
./power.nix
|
||||||
./workspace/xresources.nix
|
./secrets-envsubst.nix
|
||||||
./themes.nix
|
./secrets.nix
|
||||||
./applications.nix
|
./security.nix
|
||||||
./secrets.nix
|
./servers/gitea.nix
|
||||||
./secrets-envsubst.nix
|
./servers/jitsi.nix
|
||||||
./devices.nix
|
./servers/mailserver.nix
|
||||||
./packages.nix
|
./servers/matrix-synapse.nix
|
||||||
./users.nix
|
./servers/minidlna.nix
|
||||||
./hardware.nix
|
./servers/nextcloud.nix
|
||||||
./services.nix
|
./servers/nginx.nix
|
||||||
./power.nix
|
./servers/vsftpd.nix
|
||||||
./network.nix
|
./services.nix
|
||||||
./simple-osd-daemons.nix
|
./themes.nix
|
||||||
] ++ lib.optionals (device == "AMD-Workstation") [
|
./virtualisation.nix
|
||||||
./nextcloud.nix
|
./workspace/cursor.nix
|
||||||
./mailserver.nix
|
./workspace/fonts.nix
|
||||||
./matrix-synapse.nix
|
./workspace/git.nix
|
||||||
# ./workspace/kanshi.nix
|
./workspace/gnome3
|
||||||
./nginx.nix
|
./workspace/gpg.nix
|
||||||
./gitea.nix
|
./workspace/gtk.nix
|
||||||
./minidlna.nix
|
./workspace/i3blocks
|
||||||
];
|
./workspace/kde
|
||||||
}
|
./workspace/light.nix
|
||||||
|
./workspace/locale.nix
|
||||||
|
./workspace/mako.nix
|
||||||
|
./workspace/misc.nix
|
||||||
|
./workspace/simple-osd-daemons.nix
|
||||||
|
./workspace/ssh.nix
|
||||||
|
./workspace/sway
|
||||||
|
./workspace/xresources.nix
|
||||||
|
./workspace/zsh.nix
|
||||||
|
])
|
||||||
|
@ -2,135 +2,45 @@
|
|||||||
with lib;
|
with lib;
|
||||||
with types; {
|
with types; {
|
||||||
options = {
|
options = {
|
||||||
device = mkOption { type = strMatching "[A-z|0-9]*-(Laptop|Workstation|VM|image)"; };
|
device = mkOption { type = str; };
|
||||||
devices = mkOption { type = attrs; };
|
deviceSpecific = {
|
||||||
deviceSpecific = mkOption { type = attrs; };
|
isLaptop = mkOption {
|
||||||
};
|
type = bool;
|
||||||
config = {
|
default =
|
||||||
deviceSpecific = let
|
!isNull (builtins.match ".*Laptop" config.networking.hostName);
|
||||||
device = config.device;
|
};
|
||||||
devInfo = config.devices.${config.device};
|
devInfo = {
|
||||||
in rec {
|
cpu = {
|
||||||
isLaptop = (!isNull (builtins.match ".*Laptop" device));
|
arch = mkOption { type = enum [ "x86_64" "aarch64" ]; };
|
||||||
smallScreen = (device == "Prestigio-Laptop");
|
vendor = mkOption { type = enum [ "amd" "intel" "broadcom" ]; };
|
||||||
isShared = device == "Lenovo-Workstation";
|
clock = mkOption { type = int; };
|
||||||
cpu = devInfo.cpu.vendor;
|
cores = mkOption { type = int; };
|
||||||
inherit devInfo;
|
};
|
||||||
isSSD = devInfo.drive.type == "ssd";
|
drive = {
|
||||||
|
type = mkOption { type = enum [ "hdd" "ssd" ]; };
|
||||||
|
speed = mkOption { type = int; };
|
||||||
|
size = mkOption { type = int; };
|
||||||
|
};
|
||||||
|
ram = mkOption { type = int; };
|
||||||
|
bigScreen = mkOption {
|
||||||
|
type = bool;
|
||||||
|
default = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
# Whether machine is powerful enough for heavy stuff
|
# Whether machine is powerful enough for heavy stuff
|
||||||
goodMachine = devInfo.cpu.clock * devInfo.cpu.cores >= 4000
|
goodMachine = with config.deviceSpecific;
|
||||||
&& devInfo.drive.size >= 100 && devInfo.ram >= 8;
|
mkOption {
|
||||||
isHost = isSSD;
|
type = bool;
|
||||||
bigScreen = devInfo ? bigScreen;
|
default = devInfo.cpu.clock * devInfo.cpu.cores >= 4000
|
||||||
};
|
&& devInfo.drive.size >= 100 && devInfo.ram >= 8;
|
||||||
|
|
||||||
devices = {
|
|
||||||
T490s-Laptop = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 4600;
|
|
||||||
cores = 4;
|
|
||||||
};
|
};
|
||||||
drive = {
|
isHost = mkOption {
|
||||||
type = "ssd";
|
type = bool;
|
||||||
speed = 2000;
|
default = with config.deviceSpecific; goodMachine;
|
||||||
size = 250;
|
|
||||||
};
|
|
||||||
ram = 16;
|
|
||||||
};
|
};
|
||||||
T420-Laptop = {
|
bigScreen = mkOption {
|
||||||
legacy = false;
|
type = bool;
|
||||||
cpu = {
|
default = config.deviceSpecific.devInfo ? bigScreen;
|
||||||
vendor = "intel";
|
|
||||||
clock = 2500;
|
|
||||||
cores = 2;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 1000;
|
|
||||||
size = 120;
|
|
||||||
};
|
|
||||||
ram = 8;
|
|
||||||
};
|
|
||||||
Lenovo-Workstation = {
|
|
||||||
legacy = true;
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 2500;
|
|
||||||
cores = 2;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 250;
|
|
||||||
size = 120;
|
|
||||||
};
|
|
||||||
ram = 8;
|
|
||||||
};
|
|
||||||
AMD-Workstation = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "amd";
|
|
||||||
clock = 4200;
|
|
||||||
cores = 8;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 6000;
|
|
||||||
size = 250;
|
|
||||||
};
|
|
||||||
bigScreen = true;
|
|
||||||
ram = 32;
|
|
||||||
};
|
|
||||||
Prestigio-Laptop = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 1400;
|
|
||||||
cores = 2;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "flash";
|
|
||||||
speed = 100;
|
|
||||||
size = 32;
|
|
||||||
};
|
|
||||||
ram = 2;
|
|
||||||
};
|
|
||||||
X2100-Laptop = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 4800;
|
|
||||||
cores = 4;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 6000;
|
|
||||||
size = 256;
|
|
||||||
};
|
|
||||||
ram = 16;
|
|
||||||
};
|
|
||||||
NixOS-VM = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 1000;
|
|
||||||
cores = 1;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 50;
|
|
||||||
size = 1;
|
|
||||||
};
|
|
||||||
ram = 4;
|
|
||||||
};
|
|
||||||
iso-image = {
|
|
||||||
cpu = {
|
|
||||||
vendor = "intel";
|
|
||||||
clock = 1000;
|
|
||||||
cores = 1;
|
|
||||||
};
|
|
||||||
drive = {
|
|
||||||
type = "ssd";
|
|
||||||
speed = 50;
|
|
||||||
size = 8;
|
|
||||||
};
|
|
||||||
ram = 4;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
@ -1,12 +1,7 @@
|
|||||||
{ pkgs, config, lib, ... }:
|
{ pkgs, config, lib, ... }:
|
||||||
|
|
||||||
with rec { inherit (config) device devices deviceSpecific; };
|
with rec { inherit (config) device deviceSpecific; };
|
||||||
with deviceSpecific; {
|
with deviceSpecific; {
|
||||||
|
|
||||||
hardware.sensor.iio.enable = (device == "HP-Laptop");
|
|
||||||
hardware.cpu.${devices.${device}.cpu.vendor}.updateMicrocode =
|
|
||||||
true; # Update microcode
|
|
||||||
|
|
||||||
hardware.enableRedistributableFirmware = true; # For some unfree drivers
|
hardware.enableRedistributableFirmware = true; # For some unfree drivers
|
||||||
|
|
||||||
hardware.opengl.enable = true;
|
hardware.opengl.enable = true;
|
||||||
@ -17,116 +12,14 @@ with deviceSpecific; {
|
|||||||
hardware.bluetooth.enable = true;
|
hardware.bluetooth.enable = true;
|
||||||
hardware.bluetooth.package = pkgs.bluezFull;
|
hardware.bluetooth.package = pkgs.bluezFull;
|
||||||
|
|
||||||
services.throttled = {
|
hardware.sane.enable = true;
|
||||||
enable = device == "T490s-Laptop";
|
|
||||||
extraConfig = ''
|
|
||||||
[GENERAL]
|
|
||||||
# Enable or disable the script execution
|
|
||||||
Enabled: True
|
|
||||||
# SYSFS path for checking if the system is running on AC power
|
|
||||||
Sysfs_Power_Path: /sys/class/power_supply/AC*/online
|
|
||||||
|
|
||||||
## Settings to apply while connected to Battery power
|
|
||||||
[BATTERY]
|
|
||||||
# Update the registers every this many seconds
|
|
||||||
Update_Rate_s: 30
|
|
||||||
# Max package power for time window #1
|
|
||||||
PL1_Tdp_W: 29
|
|
||||||
# Time window #1 duration
|
|
||||||
PL1_Duration_s: 28
|
|
||||||
# Max package power for time window #2
|
|
||||||
PL2_Tdp_W: 44
|
|
||||||
# Time window #2 duration
|
|
||||||
PL2_Duration_S: 0.002
|
|
||||||
# Max allowed temperature before throttling
|
|
||||||
Trip_Temp_C: 85
|
|
||||||
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
|
|
||||||
cTDP: 1
|
|
||||||
|
|
||||||
## Settings to apply while connected to AC power
|
|
||||||
[AC]
|
|
||||||
# Update the registers every this many seconds
|
|
||||||
Update_Rate_s: 5
|
|
||||||
# Max package power for time window #1
|
|
||||||
PL1_Tdp_W: 44
|
|
||||||
# Time window #1 duration
|
|
||||||
PL1_Duration_s: 28
|
|
||||||
# Max package power for time window #2
|
|
||||||
PL2_Tdp_W: 44
|
|
||||||
# Time window #2 duration
|
|
||||||
PL2_Duration_S: 0.002
|
|
||||||
# Max allowed temperature before throttling
|
|
||||||
Trip_Temp_C: 95
|
|
||||||
# Set HWP energy performance hints to 'performance' on high load (EXPERIMENTAL)
|
|
||||||
HWP_Mode: True
|
|
||||||
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
|
|
||||||
cTDP: 2
|
|
||||||
|
|
||||||
[UNDERVOLT]
|
|
||||||
# CPU core voltage offset (mV)
|
|
||||||
CORE: -200
|
|
||||||
# Integrated GPU voltage offset (mV)
|
|
||||||
GPU: -60
|
|
||||||
# CPU cache voltage offset (mV)
|
|
||||||
CACHE: -50
|
|
||||||
# System Agent voltage offset (mV)
|
|
||||||
UNCORE: 0
|
|
||||||
# Analog I/O voltage offset (mV)
|
|
||||||
ANALOGIO: 0
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
boot.kernelModules = [ "ec_sys" ];
|
|
||||||
systemd.services.thinkpad_leds = {
|
|
||||||
enable = config.device == "T490s-Laptop";
|
|
||||||
description = "Set up thinkpad leds";
|
|
||||||
wantedBy = [ "multi-user.target" ];
|
|
||||||
script = ''
|
|
||||||
echo -n -e "\x0e" | dd of="/sys/kernel/debug/ec/ec0/io" bs=1 seek=12 count=1 conv=notrunc 2> /dev/null'';
|
|
||||||
serviceConfig.Type = "oneshot";
|
|
||||||
};
|
|
||||||
|
|
||||||
boot = {
|
|
||||||
loader = lib.mkIf (config.device != "iso-image") ({
|
|
||||||
timeout = 1;
|
|
||||||
} // (if deviceSpecific.devInfo.legacy or false then { # Non-UEFI config
|
|
||||||
grub.enable = true;
|
|
||||||
grub.version = 2;
|
|
||||||
grub.useOSProber = true;
|
|
||||||
grub.device = "/dev/sda";
|
|
||||||
} else { # UEFI config
|
|
||||||
systemd-boot.enable = true;
|
|
||||||
}));
|
|
||||||
kernelPackages = pkgs.linuxPackages_latest;
|
|
||||||
consoleLogLevel = 3;
|
|
||||||
extraModprobeConfig = ''
|
|
||||||
options ec_sys write_support=1
|
|
||||||
'' + lib.optionalString (device == "X2100-Laptop") ''
|
|
||||||
options iwlwifi bt_coex_active=0
|
|
||||||
'';
|
|
||||||
kernel.sysctl."vm.swappiness" = 0;
|
|
||||||
kernel.sysctl."kernel/sysrq" = 1;
|
|
||||||
kernelParams = [
|
|
||||||
"quiet"
|
|
||||||
"scsi_mod.use_blk_mq=1"
|
|
||||||
"modeset"
|
|
||||||
"nofb"
|
|
||||||
"rd.systemd.show_status=auto"
|
|
||||||
"rd.udev.log_priority=3"
|
|
||||||
"pti=off"
|
|
||||||
"spectre_v2=off"
|
|
||||||
];
|
|
||||||
};
|
|
||||||
|
|
||||||
hardware.sane = {
|
|
||||||
enable = true;
|
|
||||||
# extraBackends = [ pkgs.hplipWithPlugin ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.saned.enable = true;
|
services.saned.enable = true;
|
||||||
|
|
||||||
services.logind.lidSwitchExternalPower = "ignore";
|
services.logind.lidSwitchExternalPower = "ignore";
|
||||||
|
|
||||||
services.logind.extraConfig = "HandlePowerKey=suspend";
|
services.logind.extraConfig = "HandlePowerKey=suspend";
|
||||||
|
|
||||||
sound.enable = true;
|
sound.enable = true;
|
||||||
hardware.pulseaudio = {
|
hardware.pulseaudio = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
@ -2,7 +2,6 @@
|
|||||||
let
|
let
|
||||||
localRanges = [
|
localRanges = [
|
||||||
{ from = 1714; to = 1764; } # KDE connect
|
{ from = 1714; to = 1764; } # KDE connect
|
||||||
{ from = 6600; to = 6600; } # Mopidy
|
|
||||||
];
|
];
|
||||||
in {
|
in {
|
||||||
networking = {
|
networking = {
|
||||||
@ -23,6 +22,7 @@ in {
|
|||||||
usePredictableInterfaceNames = false;
|
usePredictableInterfaceNames = false;
|
||||||
hostName = config.device;
|
hostName = config.device;
|
||||||
};
|
};
|
||||||
|
networking.firewall.trustedInterfaces = [ "eth0" ];
|
||||||
systemd.services.ModemManager.wantedBy =
|
systemd.services.ModemManager.wantedBy =
|
||||||
lib.optional (config.device == "T490s-Laptop") "network.target";
|
lib.optional (config.device == "T490s-Laptop") "network.target";
|
||||||
}
|
}
|
||||||
|
25
modules/nix.nix
Normal file
25
modules/nix.nix
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
{ lib, inputs, ... }: {
|
||||||
|
nix = rec {
|
||||||
|
nixPath = lib.mkForce [ "nixpkgs=/etc/nixpkgs" ];
|
||||||
|
binaryCaches = [ "https://cache.nixos.org" ];
|
||||||
|
|
||||||
|
registry.self.flake = inputs.self;
|
||||||
|
|
||||||
|
trustedUsers = [ "root" "balsoft" "@wheel" ];
|
||||||
|
|
||||||
|
nrBuildUsers = 16;
|
||||||
|
|
||||||
|
optimise.automatic = true;
|
||||||
|
|
||||||
|
binaryCachePublicKeys =
|
||||||
|
[ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
||||||
|
|
||||||
|
package = inputs.nix.packages.x86_64-linux.nix;
|
||||||
|
|
||||||
|
extraOptions = ''
|
||||||
|
experimental-features = nix-command flakes
|
||||||
|
'';
|
||||||
|
requireSignedBinaryCaches = false;
|
||||||
|
};
|
||||||
|
environment.etc.nixpkgs.source = inputs.nixpkgs;
|
||||||
|
}
|
@ -43,27 +43,4 @@ in {
|
|||||||
allowUnfree = true;
|
allowUnfree = true;
|
||||||
android_sdk.accept_license = true;
|
android_sdk.accept_license = true;
|
||||||
};
|
};
|
||||||
environment.etc.nixpkgs.source = inputs.nixpkgs;
|
|
||||||
nix = rec {
|
|
||||||
nixPath = lib.mkForce [ "nixpkgs=/etc/nixpkgs" ];
|
|
||||||
binaryCaches = [ "https://cache.nixos.org" ];
|
|
||||||
|
|
||||||
registry.self.flake = inputs.self;
|
|
||||||
|
|
||||||
trustedUsers = [ "root" "balsoft" "@wheel" ];
|
|
||||||
|
|
||||||
nrBuildUsers = 16;
|
|
||||||
|
|
||||||
optimise.automatic = true;
|
|
||||||
|
|
||||||
binaryCachePublicKeys =
|
|
||||||
[ "cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=" ];
|
|
||||||
|
|
||||||
package = inputs.nix.packages.x86_64-linux.nix;
|
|
||||||
|
|
||||||
extraOptions = ''
|
|
||||||
experimental-features = nix-command flakes
|
|
||||||
'';
|
|
||||||
requireSignedBinaryCaches = false;
|
|
||||||
};
|
|
||||||
}
|
}
|
12
modules/servers/jitsi.nix
Normal file
12
modules/servers/jitsi.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
services.jitsi-meet = {
|
||||||
|
enable = true;
|
||||||
|
hostName = "meet.balsoft.ru";
|
||||||
|
};
|
||||||
|
|
||||||
|
services.nginx.virtualHosts.${config.services.jitsi-meet.hostName} = {
|
||||||
|
enableACME = true;
|
||||||
|
forceSSL = true;
|
||||||
|
basicAuthFile = "/var/lib/jitsi-auth";
|
||||||
|
};
|
||||||
|
}
|
10
modules/servers/vsftpd.nix
Normal file
10
modules/servers/vsftpd.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
services.vsftpd = {
|
||||||
|
enable = true;
|
||||||
|
anonymousUser = true;
|
||||||
|
allowWriteableChroot = true;
|
||||||
|
anonymousMkdirEnable = true;
|
||||||
|
anonymousUploadEnable = true;
|
||||||
|
writeEnable = true;
|
||||||
|
};
|
||||||
|
}
|
@ -3,10 +3,8 @@
|
|||||||
|
|
||||||
services.acpid.enable = true;
|
services.acpid.enable = true;
|
||||||
|
|
||||||
services.apcupsd = { enable = config.device == "AMD-Workstation"; };
|
|
||||||
|
|
||||||
services.earlyoom = {
|
services.earlyoom = {
|
||||||
enable = config.devices.${config.device}.ram < 16;
|
enable = config.deviceSpecific.devInfo.ram < 16;
|
||||||
freeMemThreshold = 5;
|
freeMemThreshold = 5;
|
||||||
freeSwapThreshold = 100;
|
freeSwapThreshold = 100;
|
||||||
};
|
};
|
||||||
@ -15,19 +13,6 @@
|
|||||||
enable = true;
|
enable = true;
|
||||||
drivers = [ pkgs.gutenprint ];
|
drivers = [ pkgs.gutenprint ];
|
||||||
};
|
};
|
||||||
programs.dconf.enable = true;
|
|
||||||
|
|
||||||
services.tor = {
|
|
||||||
enable = true;
|
|
||||||
client.enable = true;
|
|
||||||
torsocks.enable = true;
|
|
||||||
settings.SOCKSPort = [ 9050 ];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.privoxy = {
|
|
||||||
enable = true;
|
|
||||||
enableTor = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.mosh.enable = true;
|
programs.mosh.enable = true;
|
||||||
|
|
||||||
@ -37,41 +22,7 @@
|
|||||||
|
|
||||||
systemd.services.systemd-udev-settle.enable = false;
|
systemd.services.systemd-udev-settle.enable = false;
|
||||||
|
|
||||||
services.nix-serve.enable = config.device == "AMD-Workstation";
|
|
||||||
|
|
||||||
services.pcscd.enable = true;
|
services.pcscd.enable = true;
|
||||||
|
|
||||||
services.keybase.enable = true;
|
|
||||||
|
|
||||||
services.upower.enable = true;
|
services.upower.enable = true;
|
||||||
virtualisation.docker.enable = config.deviceSpecific.isHost;
|
|
||||||
virtualisation.libvirtd = {
|
|
||||||
enable = config.deviceSpecific.isHost;
|
|
||||||
};
|
|
||||||
|
|
||||||
networking.firewall.trustedInterfaces = [ "eth0" ];
|
|
||||||
|
|
||||||
services.nginx.enable = config.device == "AMD-Workstation";
|
|
||||||
|
|
||||||
services.vsftpd = {
|
|
||||||
enable = config.device == "AMD-Workstation";
|
|
||||||
anonymousUser = true;
|
|
||||||
allowWriteableChroot = true;
|
|
||||||
anonymousMkdirEnable = true;
|
|
||||||
anonymousUploadEnable = true;
|
|
||||||
writeEnable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.jitsi-meet = {
|
|
||||||
enable = config.device == "AMD-Workstation";
|
|
||||||
hostName = "meet.balsoft.ru";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.nginx.virtualHosts.${config.services.jitsi-meet.hostName} = {
|
|
||||||
enableACME = true;
|
|
||||||
forceSSL = true;
|
|
||||||
basicAuthFile = "/var/lib/jitsi-auth";
|
|
||||||
};
|
|
||||||
|
|
||||||
virtualisation.spiceUSBRedirection.enable = true;
|
|
||||||
}
|
}
|
||||||
|
7
modules/virtualisation.nix
Normal file
7
modules/virtualisation.nix
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
{ config, ... }: {
|
||||||
|
virtualisation.docker.enable = config.deviceSpecific.isHost;
|
||||||
|
virtualisation.libvirtd = {
|
||||||
|
enable = config.deviceSpecific.isHost;
|
||||||
|
};
|
||||||
|
virtualisation.spiceUSBRedirection.enable = true;
|
||||||
|
}
|
17
modules/workspace/cursor.nix
Normal file
17
modules/workspace/cursor.nix
Normal file
@ -0,0 +1,17 @@
|
|||||||
|
{ pkgs, lib, ... }: {
|
||||||
|
|
||||||
|
environment.sessionVariables = {
|
||||||
|
XCURSOR_PATH = lib.mkForce "/home/balsoft/.icons";
|
||||||
|
};
|
||||||
|
|
||||||
|
home-manager.users.balsoft = {
|
||||||
|
|
||||||
|
xsession.pointerCursor = {
|
||||||
|
package = pkgs.breeze-qt5;
|
||||||
|
name = "Breeze";
|
||||||
|
};
|
||||||
|
|
||||||
|
home.file.".icons/default".source =
|
||||||
|
"${pkgs.breeze-qt5}/share/icons/breeze_cursors";
|
||||||
|
};
|
||||||
|
}
|
12
modules/workspace/git.nix
Normal file
12
modules/workspace/git.nix
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
{
|
||||||
|
home-manager.users.balsoft.programs.git = {
|
||||||
|
enable = true;
|
||||||
|
userEmail = "balsoft@balsoft.ru";
|
||||||
|
userName = "Alexander Bantyev";
|
||||||
|
extraConfig.pull.rebase = true;
|
||||||
|
signing = {
|
||||||
|
signByDefault = true;
|
||||||
|
key = "687558B21E04FE92B255BED0E081FF12ADCB4AD5";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
10
modules/workspace/gpg.nix
Normal file
10
modules/workspace/gpg.nix
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
{
|
||||||
|
home-manager.users.balsoft = {
|
||||||
|
services.gpg-agent = {
|
||||||
|
enable = true;
|
||||||
|
enableSshSupport = true;
|
||||||
|
pinentryFlavor = "gtk2";
|
||||||
|
};
|
||||||
|
programs.gpg.enable = true;
|
||||||
|
};
|
||||||
|
}
|
@ -46,6 +46,7 @@ in {
|
|||||||
};
|
};
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
|
programs.dconf.enable = true;
|
||||||
services.dbus.packages = with pkgs; [ gnome3.dconf ];
|
services.dbus.packages = with pkgs; [ gnome3.dconf ];
|
||||||
home-manager.users.balsoft = {
|
home-manager.users.balsoft = {
|
||||||
gtk = {
|
gtk = {
|
||||||
@ -65,7 +66,7 @@ in {
|
|||||||
"davs://nextcloud.balsoft.ru/remote.php/dav/files/balsoft nextcloud.balsoft.ru"
|
"davs://nextcloud.balsoft.ru/remote.php/dav/files/balsoft nextcloud.balsoft.ru"
|
||||||
"sftp://balsoft.ru/home/balsoft balsoft.ru"
|
"sftp://balsoft.ru/home/balsoft balsoft.ru"
|
||||||
] ++ map (machine: "sftp://${machine}/home/balsoft ${machine}")
|
] ++ map (machine: "sftp://${machine}/home/balsoft ${machine}")
|
||||||
(builtins.attrNames config.devices);
|
(builtins.attrNames inputs.self.nixosConfigurations);
|
||||||
extraConfig = {
|
extraConfig = {
|
||||||
gtk-cursor-theme-name = "Breeze";
|
gtk-cursor-theme-name = "Breeze";
|
||||||
};
|
};
|
||||||
|
@ -1,15 +1,9 @@
|
|||||||
{ pkgs, lib, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
with import ../../../support.nix { inherit lib config; }; {
|
with import ../../../support.nix { inherit lib config; }; {
|
||||||
xdg.portal.enable = true;
|
xdg.portal.enable = true;
|
||||||
services.dbus.packages = [
|
services.dbus.packages =
|
||||||
pkgs.firefox
|
[ pkgs.firefox pkgs.systemd pkgs.papirus-icon-theme ];
|
||||||
pkgs.systemd
|
services.udev.packages = [ pkgs.libmtp pkgs.media-player-info ];
|
||||||
pkgs.papirus-icon-theme
|
|
||||||
];
|
|
||||||
services.udev.packages = [
|
|
||||||
pkgs.libmtp
|
|
||||||
pkgs.media-player-info
|
|
||||||
];
|
|
||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
DESKTOP_SESSION = "kde";
|
DESKTOP_SESSION = "kde";
|
||||||
@ -20,113 +14,118 @@ with import ../../../support.nix { inherit lib config; }; {
|
|||||||
QT_AUTO_SCREEN_SCALE_FACTOR = "0";
|
QT_AUTO_SCREEN_SCALE_FACTOR = "0";
|
||||||
DE = "kde";
|
DE = "kde";
|
||||||
QT_QPA_PLATFORMTHEME = "kde";
|
QT_QPA_PLATFORMTHEME = "kde";
|
||||||
KDEDIRS = "/run/current-system/sw:/run/current-system/sw/share/kservices5:/run/current-system/sw/share/kservicetypes5:/run/current-system/sw/share/kxmlgui5";
|
KDEDIRS =
|
||||||
|
"/run/current-system/sw:/run/current-system/sw/share/kservices5:/run/current-system/sw/share/kservicetypes5:/run/current-system/sw/share/kxmlgui5";
|
||||||
};
|
};
|
||||||
home-manager.users.balsoft.xdg.configFile."kdeglobals".text = genIni {
|
home-manager.users.balsoft = {
|
||||||
"Colors:Button" = {
|
services.kdeconnect.enable = true;
|
||||||
BackgroundAlternate = thmDec.dark;
|
|
||||||
BackgroundNormal = thmDec.bg;
|
xdg.configFile."kdeglobals".text = genIni {
|
||||||
DecorationFocus = thmDec.alt;
|
"Colors:Button" = {
|
||||||
DecorationHover = thmDec.alt;
|
BackgroundAlternate = thmDec.dark;
|
||||||
ForegroundActive = thmDec.alt;
|
BackgroundNormal = thmDec.bg;
|
||||||
ForegroundInactive = thmDec.dark;
|
DecorationFocus = thmDec.alt;
|
||||||
ForegroundLink = thmDec.blue;
|
DecorationHover = thmDec.alt;
|
||||||
ForegroundNegative = thmDec.red;
|
ForegroundActive = thmDec.alt;
|
||||||
ForegroundNeutral = thmDec.orange;
|
ForegroundInactive = thmDec.dark;
|
||||||
ForegroundNormal = thmDec.fg;
|
ForegroundLink = thmDec.blue;
|
||||||
ForegroundPositive = thmDec.green;
|
ForegroundNegative = thmDec.red;
|
||||||
ForegroundVisited = thmDec.gray;
|
ForegroundNeutral = thmDec.orange;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.gray;
|
||||||
|
};
|
||||||
|
"Colors:Complementary" = {
|
||||||
|
BackgroundAlternate = thmDec.dark;
|
||||||
|
BackgroundNormal = thmDec.bg;
|
||||||
|
DecorationFocus = thmDec.alt;
|
||||||
|
DecorationHover = thmDec.alt;
|
||||||
|
ForegroundActive = thmDec.orange;
|
||||||
|
ForegroundInactive = thmDec.dark;
|
||||||
|
ForegroundLink = thmDec.blue;
|
||||||
|
ForegroundNegative = thmDec.red;
|
||||||
|
ForegroundNeutral = thmDec.yellow;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.alt;
|
||||||
|
};
|
||||||
|
"Colors:Selection" = {
|
||||||
|
BackgroundAlternate = thmDec.alt;
|
||||||
|
BackgroundNormal = thmDec.alt;
|
||||||
|
DecorationFocus = thmDec.alt;
|
||||||
|
DecorationHover = thmDec.alt;
|
||||||
|
ForegroundActive = thmDec.fg;
|
||||||
|
ForegroundInactive = thmDec.fg;
|
||||||
|
ForegroundLink = thmDec.blue;
|
||||||
|
ForegroundNegative = thmDec.red;
|
||||||
|
ForegroundNeutral = thmDec.orange;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.alt;
|
||||||
|
};
|
||||||
|
"Colors:Tooltip" = {
|
||||||
|
BackgroundAlternate = thmDec.dark;
|
||||||
|
BackgroundNormal = thmDec.bg;
|
||||||
|
DecorationFocus = thmDec.alt;
|
||||||
|
DecorationHover = thmDec.alt;
|
||||||
|
ForegroundActive = thmDec.alt;
|
||||||
|
ForegroundInactive = thmDec.dark;
|
||||||
|
ForegroundLink = thmDec.blue;
|
||||||
|
ForegroundNegative = thmDec.red;
|
||||||
|
ForegroundNeutral = thmDec.orange;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.gray;
|
||||||
|
};
|
||||||
|
"Colors:View" = {
|
||||||
|
BackgroundAlternate = thmDec.dark;
|
||||||
|
BackgroundNormal = thmDec.bg;
|
||||||
|
DecorationFocus = thmDec.alt;
|
||||||
|
DecorationHover = thmDec.alt;
|
||||||
|
ForegroundActive = thmDec.alt;
|
||||||
|
ForegroundInactive = thmDec.dark;
|
||||||
|
ForegroundLink = thmDec.blue;
|
||||||
|
ForegroundNegative = thmDec.red;
|
||||||
|
ForegroundNeutral = thmDec.orange;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.gray;
|
||||||
|
};
|
||||||
|
"Colors:Window" = {
|
||||||
|
BackgroundAlternate = thmDec.dark;
|
||||||
|
BackgroundNormal = thmDec.bg;
|
||||||
|
DecorationFocus = thmDec.alt;
|
||||||
|
DecorationHover = thmDec.alt;
|
||||||
|
ForegroundActive = thmDec.alt;
|
||||||
|
ForegroundInactive = thmDec.dark;
|
||||||
|
ForegroundLink = thmDec.blue;
|
||||||
|
ForegroundNegative = thmDec.red;
|
||||||
|
ForegroundNeutral = thmDec.orange;
|
||||||
|
ForegroundNormal = thmDec.fg;
|
||||||
|
ForegroundPositive = thmDec.green;
|
||||||
|
ForegroundVisited = thmDec.gray;
|
||||||
|
};
|
||||||
|
General = {
|
||||||
|
ColorScheme = "Generated";
|
||||||
|
Name = "Generated";
|
||||||
|
fixed = "IBM Plex Mono,11,-1,5,50,0,0,0,0,0";
|
||||||
|
font = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
||||||
|
menuFont = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
||||||
|
shadeSortColumn = true;
|
||||||
|
smallestReadableFont = "IBM Plex,8,-1,5,57,0,0,0,0,0,Medium";
|
||||||
|
toolBarFont = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
||||||
|
};
|
||||||
|
KDE = {
|
||||||
|
DoubleClickInterval = 400;
|
||||||
|
ShowDeleteCommand = true;
|
||||||
|
SingleClick = false;
|
||||||
|
StartDragDist = 4;
|
||||||
|
StartDragTime = 500;
|
||||||
|
WheelScrollLines = 3;
|
||||||
|
contrast = 4;
|
||||||
|
widgetStyle = "Breeze";
|
||||||
|
};
|
||||||
|
Icons = { Theme = "Papirus-Dark"; };
|
||||||
};
|
};
|
||||||
"Colors:Complementary" = {
|
|
||||||
BackgroundAlternate = thmDec.dark;
|
|
||||||
BackgroundNormal = thmDec.bg;
|
|
||||||
DecorationFocus = thmDec.alt;
|
|
||||||
DecorationHover = thmDec.alt;
|
|
||||||
ForegroundActive = thmDec.orange;
|
|
||||||
ForegroundInactive = thmDec.dark;
|
|
||||||
ForegroundLink = thmDec.blue;
|
|
||||||
ForegroundNegative = thmDec.red;
|
|
||||||
ForegroundNeutral = thmDec.yellow;
|
|
||||||
ForegroundNormal = thmDec.fg;
|
|
||||||
ForegroundPositive = thmDec.green;
|
|
||||||
ForegroundVisited = thmDec.alt;
|
|
||||||
};
|
|
||||||
"Colors:Selection" = {
|
|
||||||
BackgroundAlternate = thmDec.alt;
|
|
||||||
BackgroundNormal = thmDec.alt;
|
|
||||||
DecorationFocus = thmDec.alt;
|
|
||||||
DecorationHover = thmDec.alt;
|
|
||||||
ForegroundActive = thmDec.fg;
|
|
||||||
ForegroundInactive = thmDec.fg;
|
|
||||||
ForegroundLink = thmDec.blue;
|
|
||||||
ForegroundNegative = thmDec.red;
|
|
||||||
ForegroundNeutral = thmDec.orange;
|
|
||||||
ForegroundNormal = thmDec.fg;
|
|
||||||
ForegroundPositive = thmDec.green;
|
|
||||||
ForegroundVisited = thmDec.alt;
|
|
||||||
};
|
|
||||||
"Colors:Tooltip" = {
|
|
||||||
BackgroundAlternate = thmDec.dark;
|
|
||||||
BackgroundNormal = thmDec.bg;
|
|
||||||
DecorationFocus = thmDec.alt;
|
|
||||||
DecorationHover = thmDec.alt;
|
|
||||||
ForegroundActive = thmDec.alt;
|
|
||||||
ForegroundInactive = thmDec.dark;
|
|
||||||
ForegroundLink = thmDec.blue;
|
|
||||||
ForegroundNegative = thmDec.red;
|
|
||||||
ForegroundNeutral = thmDec.orange;
|
|
||||||
ForegroundNormal = thmDec.fg;
|
|
||||||
ForegroundPositive = thmDec.green;
|
|
||||||
ForegroundVisited = thmDec.gray;
|
|
||||||
};
|
|
||||||
"Colors:View" = {
|
|
||||||
BackgroundAlternate = thmDec.dark;
|
|
||||||
BackgroundNormal = thmDec.bg;
|
|
||||||
DecorationFocus = thmDec.alt;
|
|
||||||
DecorationHover = thmDec.alt;
|
|
||||||
ForegroundActive = thmDec.alt;
|
|
||||||
ForegroundInactive = thmDec.dark;
|
|
||||||
ForegroundLink = thmDec.blue;
|
|
||||||
ForegroundNegative = thmDec.red;
|
|
||||||
ForegroundNeutral = thmDec.orange;
|
|
||||||
ForegroundNormal = thmDec.fg;
|
|
||||||
ForegroundPositive = thmDec.green;
|
|
||||||
ForegroundVisited = thmDec.gray;
|
|
||||||
};
|
|
||||||
"Colors:Window" = {
|
|
||||||
BackgroundAlternate = thmDec.dark;
|
|
||||||
BackgroundNormal = thmDec.bg;
|
|
||||||
DecorationFocus = thmDec.alt;
|
|
||||||
DecorationHover = thmDec.alt;
|
|
||||||
ForegroundActive = thmDec.alt;
|
|
||||||
ForegroundInactive = thmDec.dark;
|
|
||||||
ForegroundLink = thmDec.blue;
|
|
||||||
ForegroundNegative = thmDec.red;
|
|
||||||
ForegroundNeutral = thmDec.orange;
|
|
||||||
ForegroundNormal = thmDec.fg;
|
|
||||||
ForegroundPositive = thmDec.green;
|
|
||||||
ForegroundVisited = thmDec.gray;
|
|
||||||
};
|
|
||||||
General = {
|
|
||||||
ColorScheme = "Generated";
|
|
||||||
Name = "Generated";
|
|
||||||
fixed = "IBM Plex Mono,11,-1,5,50,0,0,0,0,0";
|
|
||||||
font = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
|
||||||
menuFont = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
|
||||||
shadeSortColumn = true;
|
|
||||||
smallestReadableFont = "IBM Plex,8,-1,5,57,0,0,0,0,0,Medium";
|
|
||||||
toolBarFont = "IBM Plex,11,-1,5,50,0,0,0,0,0";
|
|
||||||
};
|
|
||||||
KDE = {
|
|
||||||
DoubleClickInterval = 400;
|
|
||||||
ShowDeleteCommand = true;
|
|
||||||
SingleClick = false;
|
|
||||||
StartDragDist = 4;
|
|
||||||
StartDragTime = 500;
|
|
||||||
WheelScrollLines = 3;
|
|
||||||
contrast = 4;
|
|
||||||
widgetStyle = "Breeze";
|
|
||||||
};
|
|
||||||
Icons = { Theme = "Papirus-Dark"; };
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -4,19 +4,22 @@
|
|||||||
|
|
||||||
environment.sessionVariables = {
|
environment.sessionVariables = {
|
||||||
XKB_DEFAULT_LAYOUT = "us,ru";
|
XKB_DEFAULT_LAYOUT = "us,ru";
|
||||||
XKB_DEFAULT_OPTIONS = "grp:lctrl_toggle,grp_led:caps,ctrl:nocaps,misc:typo,lv3:ralt_switch";
|
XKB_DEFAULT_OPTIONS =
|
||||||
|
"grp:lctrl_toggle,grp_led:caps,ctrl:nocaps,misc:typo,lv3:ralt_switch";
|
||||||
LANG = lib.mkForce "en_GB.UTF-8";
|
LANG = lib.mkForce "en_GB.UTF-8";
|
||||||
};
|
};
|
||||||
|
|
||||||
time.timeZone = "Europe/Moscow"; # Mother Russia
|
time.timeZone = "Europe/Moscow"; # Mother Russia
|
||||||
home-manager.users.balsoft.home.language = let
|
home-manager.users.balsoft = {
|
||||||
en = "en_GB.UTF-8";
|
home.language = let
|
||||||
ru = "ru_RU.UTF-8";
|
en = "en_GB.UTF-8";
|
||||||
in {
|
ru = "ru_RU.UTF-8";
|
||||||
address = ru;
|
in {
|
||||||
monetary = ru;
|
address = ru;
|
||||||
paper = ru;
|
monetary = ru;
|
||||||
time = en;
|
paper = ru;
|
||||||
base = en;
|
time = en;
|
||||||
|
base = en;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
@ -1,31 +1,8 @@
|
|||||||
{ pkgs, lib, config, inputs, ... }: {
|
{ pkgs, lib, config, inputs, ... }: {
|
||||||
programs.sway.enable = true;
|
|
||||||
users.users.balsoft.extraGroups = [ "sway" ];
|
|
||||||
systemd.coredump.enable = true;
|
systemd.coredump.enable = true;
|
||||||
|
|
||||||
environment.sessionVariables = config.home-manager.users.balsoft.home.sessionVariables // {
|
environment.sessionVariables = config.home-manager.users.balsoft.home.sessionVariables // {
|
||||||
EDITOR = config.defaultApplications.editor.cmd;
|
|
||||||
VISUAL = config.defaultApplications.editor.cmd;
|
|
||||||
LESS = "-asrRix8";
|
|
||||||
XDG_SESSION_TYPE = "wayland";
|
|
||||||
QT_QPA_PLATFORM = "wayland";
|
|
||||||
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
|
||||||
NIX_AUTO_RUN = "1";
|
NIX_AUTO_RUN = "1";
|
||||||
XCURSOR_PATH = lib.mkForce "/home/balsoft/.icons";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.atd.enable = true;
|
|
||||||
|
|
||||||
containers.fhs-compat.config = {...}: {
|
|
||||||
imports = [ inputs.nixos-fhs-compat.nixosModules.combined ];
|
|
||||||
|
|
||||||
environment.fhs.enable = true;
|
|
||||||
environment.fhs.linkLibs = true;
|
|
||||||
environment.lsb.enable = true;
|
|
||||||
|
|
||||||
users.users.balsoft = {
|
|
||||||
isNormalUser = true;
|
|
||||||
password = "";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
home-manager.users.balsoft = {
|
home-manager.users.balsoft = {
|
||||||
@ -36,41 +13,18 @@
|
|||||||
after = [ ];
|
after = [ ];
|
||||||
data = "rm -f /home/balsoft/.config/mimeapps.list";
|
data = "rm -f /home/balsoft/.config/mimeapps.list";
|
||||||
};
|
};
|
||||||
services.udiskie.enable = true;
|
|
||||||
programs.git = {
|
|
||||||
enable = true;
|
|
||||||
userEmail = "balsoft@balsoft.ru";
|
|
||||||
userName = "Alexander Bantyev";
|
|
||||||
extraConfig.pull.rebase = true;
|
|
||||||
signing = {
|
|
||||||
signByDefault = true;
|
|
||||||
key = "687558B21E04FE92B255BED0E081FF12ADCB4AD5";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
services.gpg-agent = {
|
|
||||||
enable = true;
|
|
||||||
enableSshSupport = true;
|
|
||||||
pinentryFlavor = "gtk2";
|
|
||||||
};
|
|
||||||
programs.gpg.enable = true;
|
|
||||||
news.display = "silent";
|
news.display = "silent";
|
||||||
programs.command-not-found = {
|
programs.command-not-found = {
|
||||||
enable = true;
|
enable = true;
|
||||||
dbPath = ../../misc/programs.sqlite;
|
dbPath = ../../misc/programs.sqlite;
|
||||||
};
|
};
|
||||||
home.keyboard = {
|
|
||||||
options = [ "grp:win_space_toggle,grp_led:caps,ctrl:nocaps" ];
|
|
||||||
layout = "us,ru";
|
|
||||||
};
|
|
||||||
systemd.user.startServices = true;
|
systemd.user.startServices = true;
|
||||||
services.kdeconnect.enable = true;
|
|
||||||
|
|
||||||
xsession.pointerCursor = {
|
|
||||||
package = pkgs.breeze-qt5;
|
|
||||||
name = "Breeze";
|
|
||||||
};
|
|
||||||
|
|
||||||
home.file.".icons/default".source = "${pkgs.breeze-qt5}/share/icons/breeze_cursors";
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
home-manager.users.balsoft.home.stateVersion = "20.09";
|
||||||
|
|
||||||
|
system.stateVersion = "18.03";
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -7,7 +7,7 @@ let
|
|||||||
Restart = "always";
|
Restart = "always";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
inherit (import ../support.nix { inherit lib config; }) genIni;
|
inherit (import ../../support.nix { inherit lib config; }) genIni;
|
||||||
daemons = names:
|
daemons = names:
|
||||||
builtins.listToAttrs (builtins.map (name:
|
builtins.listToAttrs (builtins.map (name:
|
||||||
{
|
{
|
@ -7,12 +7,21 @@ let
|
|||||||
lock = pkgs.writeShellScript "lock"
|
lock = pkgs.writeShellScript "lock"
|
||||||
"swaymsg 'output * dpms off'; sudo /run/current-system/sw/bin/lock; swaymsg 'output * dpms on'";
|
"swaymsg 'output * dpms off'; sudo /run/current-system/sw/bin/lock; swaymsg 'output * dpms on'";
|
||||||
in {
|
in {
|
||||||
environment.sessionVariables._JAVA_AWT_WM_NONREPARENTING = "1";
|
environment.sessionVariables = {
|
||||||
|
_JAVA_AWT_WM_NONREPARENTING = "1";
|
||||||
|
XDG_SESSION_TYPE = "wayland";
|
||||||
|
QT_QPA_PLATFORM = "wayland";
|
||||||
|
QT_WAYLAND_DISABLE_WINDOWDECORATION = "1";
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.sway.enable = true;
|
||||||
|
|
||||||
programs.sway.wrapperFeatures.gtk = true;
|
programs.sway.wrapperFeatures.gtk = true;
|
||||||
|
|
||||||
programs.sway.extraPackages = lib.mkForce (with pkgs; [ swayidle xwayland ]);
|
programs.sway.extraPackages = lib.mkForce (with pkgs; [ swayidle xwayland ]);
|
||||||
|
|
||||||
|
users.users.balsoft.extraGroups = [ "sway" ];
|
||||||
|
|
||||||
home-manager.users.balsoft.wayland.windowManager.sway = {
|
home-manager.users.balsoft.wayland.windowManager.sway = {
|
||||||
enable = true;
|
enable = true;
|
||||||
config = rec {
|
config = rec {
|
||||||
|
20
profiles/base.nix
Normal file
20
profiles/base.nix
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = with inputs.self.nixosModules; [
|
||||||
|
inputs.home-manager.nixosModules.home-manager
|
||||||
|
|
||||||
|
boot
|
||||||
|
secrets
|
||||||
|
secrets-envsubst
|
||||||
|
|
||||||
|
locale
|
||||||
|
network
|
||||||
|
overlay
|
||||||
|
devices
|
||||||
|
nix
|
||||||
|
security
|
||||||
|
ssh
|
||||||
|
git
|
||||||
|
gpg
|
||||||
|
zsh
|
||||||
|
];
|
||||||
|
}
|
5
profiles/default.nix
Normal file
5
profiles/default.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
server = ./server.nix;
|
||||||
|
desktop = ./desktop.nix;
|
||||||
|
base = ./base.nix;
|
||||||
|
}
|
33
profiles/desktop.nix
Normal file
33
profiles/desktop.nix
Normal file
@ -0,0 +1,33 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = with inputs.self.nixosModules; [
|
||||||
|
./base.nix
|
||||||
|
|
||||||
|
applications
|
||||||
|
hardware
|
||||||
|
power
|
||||||
|
services
|
||||||
|
themes
|
||||||
|
virtualisation
|
||||||
|
|
||||||
|
alacritty
|
||||||
|
emacs
|
||||||
|
firefox
|
||||||
|
geary
|
||||||
|
packages
|
||||||
|
weechat
|
||||||
|
yt-utilities
|
||||||
|
|
||||||
|
cursor
|
||||||
|
fonts
|
||||||
|
gnome3
|
||||||
|
gtk
|
||||||
|
i3blocks
|
||||||
|
kde
|
||||||
|
light
|
||||||
|
mako
|
||||||
|
misc
|
||||||
|
simple-osd-daemons
|
||||||
|
sway
|
||||||
|
xresources
|
||||||
|
];
|
||||||
|
}
|
5
profiles/server.nix
Normal file
5
profiles/server.nix
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{ inputs, ... }: {
|
||||||
|
imports = [
|
||||||
|
./base.nix
|
||||||
|
];
|
||||||
|
}
|
Loading…
Reference in New Issue
Block a user