nixos: remove forEachUser helper
This commit is contained in:
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, forEachUser, makeEnable, realUsers, ... }:
|
{ config, pkgs, makeEnable, realUsers, ... }:
|
||||||
makeEnable config "myModules.base" true {
|
makeEnable config "myModules.base" true {
|
||||||
nixpkgs.config.permittedInsecurePackages = [
|
nixpkgs.config.permittedInsecurePackages = [
|
||||||
"electron-12.2.3"
|
"electron-12.2.3"
|
||||||
|
|||||||
@@ -97,9 +97,7 @@
|
|||||||
specialArgs = rec {
|
specialArgs = rec {
|
||||||
inherit inputs machineNames;
|
inherit inputs machineNames;
|
||||||
makeEnable = (import ../make-enable.nix) nixpkgs.lib;
|
makeEnable = (import ../make-enable.nix) nixpkgs.lib;
|
||||||
mapValueToKeys = keys: value: builtins.listToAttrs (map (name: { inherit name value; }) keys);
|
|
||||||
realUsers = [ "root" "imalison" "kat" "dean" "alex" "ben"];
|
realUsers = [ "root" "imalison" "kat" "dean" "alex" "ben"];
|
||||||
forEachUser = mapValueToKeys realUsers;
|
|
||||||
} // specialArgs // (import ../keys.nix);
|
} // specialArgs // (import ../keys.nix);
|
||||||
});
|
});
|
||||||
in
|
in
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, forEachUser, ... }:
|
{ config, lib, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./android.nix
|
./android.nix
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ makeEnable config "myModules.desktop" true {
|
|||||||
imports = [
|
imports = [
|
||||||
./fonts.nix
|
./fonts.nix
|
||||||
./hyprland.nix
|
./hyprland.nix
|
||||||
|
./keyd.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
services.xserver = {
|
services.xserver = {
|
||||||
@@ -47,6 +48,7 @@ makeEnable config "myModules.desktop" true {
|
|||||||
|
|
||||||
# XOrg
|
# XOrg
|
||||||
autorandr
|
autorandr
|
||||||
|
keyd
|
||||||
wmctrl
|
wmctrl
|
||||||
xclip
|
xclip
|
||||||
xdotool
|
xdotool
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, config, makeEnable, forEachUser, ... }:
|
{ pkgs, config, makeEnable, ... }:
|
||||||
makeEnable config "myModules.electron" false {
|
makeEnable config "myModules.electron" false {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
element-desktop
|
element-desktop
|
||||||
@@ -8,21 +8,23 @@ makeEnable config "myModules.electron" false {
|
|||||||
# keybase-gui
|
# keybase-gui
|
||||||
zoom-us
|
zoom-us
|
||||||
];
|
];
|
||||||
home-manager.users = forEachUser (if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then {
|
home-manager.sharedModules = [
|
||||||
# systemd.user.services.bitwarden = {
|
(if pkgs.stdenv.hostPlatform.system == "x86_64-linux" then {
|
||||||
# Unit = {
|
# systemd.user.services.bitwarden = {
|
||||||
# Description = "Bitwarden";
|
# Unit = {
|
||||||
# After = [ "graphical-session-pre.target" "tray.target" ];
|
# Description = "Bitwarden";
|
||||||
# PartOf = [ "graphical-session.target" ];
|
# After = [ "graphical-session-pre.target" "tray.target" ];
|
||||||
# };
|
# PartOf = [ "graphical-session.target" ];
|
||||||
|
# };
|
||||||
|
|
||||||
# Install = { WantedBy = [ "graphical-session.target" ]; };
|
# Install = { WantedBy = [ "graphical-session.target" ]; };
|
||||||
|
|
||||||
# Service = {
|
# Service = {
|
||||||
# ExecStart = "${pkgs.bitwarden}/bin/bitwarden";
|
# ExecStart = "${pkgs.bitwarden}/bin/bitwarden";
|
||||||
# Restart = "always";
|
# Restart = "always";
|
||||||
# RestartSec = 3;
|
# RestartSec = 3;
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
} else {});
|
} else {})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -342,8 +342,6 @@
|
|||||||
(_: value: (builtins.elem "isNormalUser" (builtins.attrNames value)) && value.isNormalUser)
|
(_: value: (builtins.elem "isNormalUser" (builtins.attrNames value)) && value.isNormalUser)
|
||||||
usersInfo.users.users)
|
usersInfo.users.users)
|
||||||
);
|
);
|
||||||
mapAllKeysToValue = keys: value: builtins.listToAttrs (map (name: {inherit name value;}) keys);
|
|
||||||
forEachUser = mapAllKeysToValue realUsers;
|
|
||||||
}
|
}
|
||||||
// specialArgs;
|
// specialArgs;
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -60,22 +60,6 @@
|
|||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
|
|
||||||
systemd.user.services.setxkbmap = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Set up keyboard in X";
|
|
||||||
After = [ "graphical-session-pre.target" ];
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
};
|
|
||||||
|
|
||||||
Install = { WantedBy = [ "graphical-session.target" ]; };
|
|
||||||
|
|
||||||
Service = {
|
|
||||||
Type = "oneshot";
|
|
||||||
RemainAfterExit = true;
|
|
||||||
ExecStart = "/usr/bin/env load_xkb_map";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
gtk = {
|
gtk = {
|
||||||
enable = true;
|
enable = true;
|
||||||
iconTheme = {
|
iconTheme = {
|
||||||
|
|||||||
@@ -6,6 +6,119 @@ makeEnable config "myModules.hyprland" true {
|
|||||||
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
package = inputs.hyprland.packages.${pkgs.stdenv.hostPlatform.system}.hyprland;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
home-manager.sharedModules = [
|
||||||
|
{
|
||||||
|
# Wire the Hyprland config from dotfiles into ~/.config/hypr
|
||||||
|
xdg.configFile."hypr" = {
|
||||||
|
source = ../dotfiles/config/hypr;
|
||||||
|
recursive = true;
|
||||||
|
force = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
programs.waybar = {
|
||||||
|
enable = true;
|
||||||
|
systemd.enable = true;
|
||||||
|
settings = [
|
||||||
|
{
|
||||||
|
layer = "top";
|
||||||
|
position = "top";
|
||||||
|
height = 30;
|
||||||
|
"modules-left" = [ "hyprland/workspaces" ];
|
||||||
|
"modules-center" = [ "hyprland/window" ];
|
||||||
|
"modules-right" = [ "tray" "clock" ];
|
||||||
|
|
||||||
|
"hyprland/workspaces" = {
|
||||||
|
format = "{id}:{windows}";
|
||||||
|
"format-window-separator" = " ";
|
||||||
|
"window-rewrite-default" = "";
|
||||||
|
"window-rewrite" = {
|
||||||
|
"class<firefox>" = "";
|
||||||
|
"class<google-chrome|chromium>" = "";
|
||||||
|
"class<code|codium>" = "";
|
||||||
|
"class<Alacritty|kitty|foot>" = "";
|
||||||
|
"class<Slack>" = "";
|
||||||
|
"class<Spotify>" = "";
|
||||||
|
"class<Element|discord>" = "";
|
||||||
|
"class<pavucontrol>" = "";
|
||||||
|
"class<transmission-gtk>" = "";
|
||||||
|
};
|
||||||
|
"persistent-workspaces" = { "*" = 10; };
|
||||||
|
"all-outputs" = true;
|
||||||
|
"on-click" = "activate";
|
||||||
|
};
|
||||||
|
|
||||||
|
"hyprland/window" = {
|
||||||
|
format = "{class}: {title}";
|
||||||
|
"separate-outputs" = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
tray = {
|
||||||
|
spacing = 8;
|
||||||
|
};
|
||||||
|
|
||||||
|
clock = {
|
||||||
|
format = "{:%a %b %d %I:%M:%S %p}";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
style = ''
|
||||||
|
* {
|
||||||
|
border: none;
|
||||||
|
border-radius: 0;
|
||||||
|
font-family: "Roboto", "JetBrainsMono Nerd Font";
|
||||||
|
font-size: 11pt;
|
||||||
|
min-height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
window#waybar {
|
||||||
|
background: rgba(24, 24, 24, 0.92);
|
||||||
|
color: #e6e6e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces {
|
||||||
|
margin-left: 6px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button {
|
||||||
|
padding: 0 8px;
|
||||||
|
margin: 4px 4px;
|
||||||
|
border-radius: 6px;
|
||||||
|
background: transparent;
|
||||||
|
color: #bfbfbf;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.active {
|
||||||
|
background: #e0b45a;
|
||||||
|
color: #1c1c1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.visible {
|
||||||
|
background: #3a3a3a;
|
||||||
|
color: #e6e6e6;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.urgent {
|
||||||
|
background: #e06060;
|
||||||
|
color: #1c1c1c;
|
||||||
|
}
|
||||||
|
|
||||||
|
#workspaces button.empty {
|
||||||
|
color: #777777;
|
||||||
|
}
|
||||||
|
|
||||||
|
#window {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
|
||||||
|
#tray,
|
||||||
|
#clock {
|
||||||
|
padding: 0 10px;
|
||||||
|
}
|
||||||
|
'';
|
||||||
|
};
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# Hyprland-specific packages
|
# Hyprland-specific packages
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
# Hyprland utilities
|
# Hyprland utilities
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
{ forEachUser, ... }: {
|
{ ... }: {
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
services.kbfs.enable = true;
|
{ services.kbfs.enable = true; }
|
||||||
};
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, inputs, forEachUser, ... }:
|
{ lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -71,9 +71,11 @@
|
|||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.05";
|
{
|
||||||
};
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
{ lib, pkgs, config, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -18,9 +18,11 @@
|
|||||||
wsl.defaultUser = "ben";
|
wsl.defaultUser = "ben";
|
||||||
system.stateVersion = "22.05";
|
system.stateVersion = "22.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "22.05";
|
{
|
||||||
};
|
home.stateVersion = "22.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
users.users.ben = {
|
users.users.ben = {
|
||||||
extraGroups = [
|
extraGroups = [
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ pkgs, lib, forEachUser, config, ... }:
|
{ pkgs, lib, config, ... }:
|
||||||
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
|
let biskcomp-nginx-hostnames = "192.168.1.44 railbird.ai 1896Folsom.duckdns.org biskcomp.local 0.0.0.0 67.162.131.71";
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
@@ -157,7 +157,9 @@ in
|
|||||||
networking.hostName = "biskcomp";
|
networking.hostName = "biskcomp";
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.11";
|
{
|
||||||
};
|
home.stateVersion = "23.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, forEachUser, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -53,9 +53,11 @@
|
|||||||
|
|
||||||
networking.hostName = "david-blade";
|
networking.hostName = "david-blade";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "24.05";
|
{
|
||||||
};
|
home.stateVersion = "24.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
system.stateVersion = "24.05";
|
system.stateVersion = "24.05";
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
{ lib, pkgs, config, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -15,7 +15,9 @@
|
|||||||
wsl.defaultUser = "dean";
|
wsl.defaultUser = "dean";
|
||||||
system.stateVersion = "22.05";
|
system.stateVersion = "22.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "22.05";
|
{
|
||||||
};
|
home.stateVersion = "22.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
{ lib, pkgs, config, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -12,7 +12,9 @@
|
|||||||
wsl.defaultUser = "kat";
|
wsl.defaultUser = "kat";
|
||||||
system.stateVersion = "22.05";
|
system.stateVersion = "22.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "22.05";
|
{
|
||||||
};
|
home.stateVersion = "22.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, forEachUser, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -55,7 +55,9 @@
|
|||||||
|
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.05";
|
{
|
||||||
};
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, forEachUser, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -106,9 +106,11 @@
|
|||||||
{ device = "/dev/disk/by-uuid/598e9aa1-4940-4410-a2fa-3dfd8b7d2c0d"; }
|
{ device = "/dev/disk/by-uuid/598e9aa1-4940-4410-a2fa-3dfd8b7d2c0d"; }
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.11";
|
{
|
||||||
};
|
home.stateVersion = "23.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
networking.hostName = "jimi-hendnix";
|
networking.hostName = "jimi-hendnix";
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, forEachUser, ... }:
|
{ config, lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -201,7 +201,9 @@
|
|||||||
|
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.05";
|
{
|
||||||
};
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, inputs, forEachUser, ... }:
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -62,9 +62,11 @@
|
|||||||
services.xrdp.defaultWindowManager = "startplasma-x11";
|
services.xrdp.defaultWindowManager = "startplasma-x11";
|
||||||
services.xrdp.openFirewall = true;
|
services.xrdp.openFirewall = true;
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.11";
|
{
|
||||||
};
|
home.stateVersion = "23.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, forEachUser, inputs, orgAgendaApiContainer ? null, orgAgendaApiImageName ? "org-agenda-api", ... }:
|
{ config, lib, pkgs, inputs, orgAgendaApiContainer ? null, orgAgendaApiImageName ? "org-agenda-api", ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -86,9 +86,11 @@
|
|||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
|
||||||
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
hardware.cpu.amd.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.11";
|
{
|
||||||
};
|
home.stateVersion = "23.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
system.stateVersion = "23.11";
|
system.stateVersion = "23.11";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, forEachUser, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -93,9 +93,11 @@
|
|||||||
# services.xrdp.openFirewall = true;
|
# services.xrdp.openFirewall = true;
|
||||||
|
|
||||||
system.stateVersion = "20.03";
|
system.stateVersion = "20.03";
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "21.05";
|
{
|
||||||
};
|
home.stateVersion = "21.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# users.extraUsers.dean.home = "/shared/dean";
|
# users.extraUsers.dean.home = "/shared/dean";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
{ lib, pkgs, config, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -18,7 +18,9 @@
|
|||||||
wsl.defaultUser = "imalison";
|
wsl.defaultUser = "imalison";
|
||||||
system.stateVersion = "22.05";
|
system.stateVersion = "22.05";
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "22.05";
|
{
|
||||||
};
|
home.stateVersion = "22.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, forEachUser, ... }:
|
{ lib, pkgs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -83,9 +83,11 @@
|
|||||||
# services.xrdp.openFirewall = true;
|
# services.xrdp.openFirewall = true;
|
||||||
|
|
||||||
system.stateVersion = "20.03";
|
system.stateVersion = "20.03";
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "21.05";
|
{
|
||||||
};
|
home.stateVersion = "21.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
# users.extraUsers.dean.home = "/shared/dean";
|
# users.extraUsers.dean.home = "/shared/dean";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ lib, pkgs, config, inputs, forEachUser, ... }:
|
{ lib, pkgs, config, inputs, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
../configuration.nix
|
../configuration.nix
|
||||||
@@ -11,9 +11,11 @@
|
|||||||
wsl.defaultUser = "imalison";
|
wsl.defaultUser = "imalison";
|
||||||
system.stateVersion = "23.11"; # Did you read the comment?
|
system.stateVersion = "23.11"; # Did you read the comment?
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.11";
|
{
|
||||||
};
|
home.stateVersion = "23.11";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
programs.gnupg = {
|
programs.gnupg = {
|
||||||
agent = {
|
agent = {
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ config, lib, pkgs, inputs, forEachUser, ... }:
|
{ config, lib, pkgs, inputs, ... }:
|
||||||
|
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
@@ -83,9 +83,11 @@
|
|||||||
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
powerManagement.cpuFreqGovernor = lib.mkDefault "performance";
|
||||||
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
|
hardware.cpu.intel.updateMicrocode = lib.mkDefault true;
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
home.stateVersion = "23.05";
|
{
|
||||||
};
|
home.stateVersion = "23.05";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
system.stateVersion = "23.05";
|
system.stateVersion = "23.05";
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
{ inputs, specialArgs, config, lib, ... }:
|
{ inputs, specialArgs, config, lib, realUsers, ... }:
|
||||||
{
|
{
|
||||||
imports = [
|
imports = [
|
||||||
inputs.home-manager.nixosModules.home-manager
|
inputs.home-manager.nixosModules.home-manager
|
||||||
@@ -11,6 +11,7 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
config = {
|
config = {
|
||||||
|
home-manager.users = lib.genAttrs realUsers (_: {});
|
||||||
home-manager.extraSpecialArgs = {
|
home-manager.extraSpecialArgs = {
|
||||||
nixos = {
|
nixos = {
|
||||||
inherit specialArgs config;
|
inherit specialArgs config;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
{ inputs, config, makeEnable, forEachUser, ... }:
|
{ inputs, config, makeEnable, ... }:
|
||||||
makeEnable config "myModules.vscode" true {
|
makeEnable config "myModules.vscode" true {
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
imports = [inputs.vscode-server.homeModules.default];
|
inputs.vscode-server.homeModules.default
|
||||||
services.vscode-server.enable = true;
|
{ services.vscode-server.enable = true; }
|
||||||
};
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
356
nixos/xmonad.nix
356
nixos/xmonad.nix
@@ -1,4 +1,4 @@
|
|||||||
{ config, pkgs, inputs, forEachUser, makeEnable, ... }:
|
{ config, pkgs, inputs, makeEnable, ... }:
|
||||||
makeEnable config "myModules.xmonad" true {
|
makeEnable config "myModules.xmonad" true {
|
||||||
nixpkgs.overlays = with inputs; [
|
nixpkgs.overlays = with inputs; [
|
||||||
xmonad.overlay
|
xmonad.overlay
|
||||||
@@ -34,190 +34,191 @@ makeEnable config "myModules.xmonad" true {
|
|||||||
inputs.imalison-taffybar.defaultPackage."${pkgs.stdenv.hostPlatform.system}"
|
inputs.imalison-taffybar.defaultPackage."${pkgs.stdenv.hostPlatform.system}"
|
||||||
];
|
];
|
||||||
|
|
||||||
home-manager.users = forEachUser {
|
home-manager.sharedModules = [
|
||||||
imports = [ ./dunst.nix ];
|
{
|
||||||
|
imports = [ ./dunst.nix ];
|
||||||
|
|
||||||
services.blueman-applet = {
|
services.blueman-applet = {
|
||||||
enable = true;
|
enable = true;
|
||||||
};
|
|
||||||
|
|
||||||
services.taffybar = {
|
|
||||||
enable = true;
|
|
||||||
package = inputs.imalison-taffybar.defaultPackage."${pkgs.stdenv.hostPlatform.system}";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.kdeconnect = {
|
|
||||||
enable = true;
|
|
||||||
indicator = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
services.network-manager-applet.enable = true;
|
|
||||||
|
|
||||||
# Disable the XDG autostart for nm-applet since we're managing it via systemd.
|
|
||||||
# The XDG autostart races with the systemd service and doesn't use --indicator.
|
|
||||||
xdg.configFile."autostart/nm-applet.desktop".text = ''
|
|
||||||
[Desktop Entry]
|
|
||||||
Hidden=true
|
|
||||||
'';
|
|
||||||
|
|
||||||
services.udiskie = {
|
|
||||||
enable = true;
|
|
||||||
tray = "always";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.status-notifier-watcher = {
|
|
||||||
enable = true;
|
|
||||||
flags = ["--log-level" "DEBUG"];
|
|
||||||
};
|
|
||||||
|
|
||||||
services.autorandr.enable = true;
|
|
||||||
|
|
||||||
services.random-background = {
|
|
||||||
enable = true;
|
|
||||||
display = "fill";
|
|
||||||
interval = "1h";
|
|
||||||
imageDirectory = "/var/lib/syncthing/sync/Wallpaper/";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.xsettingsd.enable = true;
|
|
||||||
|
|
||||||
services.pasystray.enable = true;
|
|
||||||
|
|
||||||
# services.parcellite = {
|
|
||||||
# enable = true;
|
|
||||||
# package = pkgs.clipit;
|
|
||||||
# };
|
|
||||||
|
|
||||||
services.flameshot = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
|
|
||||||
# Completely disable home-manager's picom - we manage everything ourselves
|
|
||||||
# to work around the libconfig list vs array syntax issue for animations
|
|
||||||
services.picom.enable = false;
|
|
||||||
|
|
||||||
# Our own picom systemd service
|
|
||||||
systemd.user.services.picom = {
|
|
||||||
Unit = {
|
|
||||||
Description = "Picom X11 compositor";
|
|
||||||
After = [ "graphical-session.target" ];
|
|
||||||
PartOf = [ "graphical-session.target" ];
|
|
||||||
};
|
};
|
||||||
Service = {
|
|
||||||
# Debug logging to file for monitoring
|
services.taffybar = {
|
||||||
ExecStart = "${pkgs.picom}/bin/picom --config %h/.config/picom/picom.conf --log-level=debug --log-file=%h/.local/share/picom/debug.log";
|
enable = true;
|
||||||
Restart = "always";
|
package = inputs.imalison-taffybar.defaultPackage."${pkgs.stdenv.hostPlatform.system}";
|
||||||
RestartSec = 3;
|
|
||||||
};
|
};
|
||||||
Install = {
|
|
||||||
WantedBy = [ "graphical-session.target" ];
|
services.kdeconnect = {
|
||||||
|
enable = true;
|
||||||
|
indicator = true;
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
# Ensure log directory exists
|
services.network-manager-applet.enable = true;
|
||||||
xdg.dataFile."picom/.keep".text = "";
|
|
||||||
|
|
||||||
# Write complete picom config directly to avoid home-manager's libconfig generator
|
# Disable the XDG autostart for nm-applet since we're managing it via systemd.
|
||||||
# which incorrectly uses [] instead of () for the animations list
|
# The XDG autostart races with the systemd service and doesn't use --indicator.
|
||||||
xdg.configFile."picom/picom.conf" = {
|
xdg.configFile."autostart/nm-applet.desktop".text = ''
|
||||||
force = true; # Override home-manager's generated config
|
[Desktop Entry]
|
||||||
text = ''
|
Hidden=true
|
||||||
# Backend and basic settings
|
'';
|
||||||
backend = "glx";
|
|
||||||
vsync = ${if config.myModules.xmonad.picom.vSync.enable then "true" else "false"};
|
|
||||||
|
|
||||||
# Spring physics animations (mainline picom with spring-physics branch)
|
services.udiskie = {
|
||||||
# Syntax: spring(stiffness, dampening, mass) or spring(stiffness, dampening, mass, clamping)
|
enable = true;
|
||||||
# Set clamping to false for bounce/overshoot effects
|
tray = "always";
|
||||||
animations = (
|
};
|
||||||
# Window move/resize animation with spring physics
|
|
||||||
# "geometry" is alias for "size" + "position" triggers
|
|
||||||
# Suppress opacity changes so they don't interrupt geometry animations
|
|
||||||
{
|
|
||||||
triggers = ["geometry"];
|
|
||||||
suppressions = ["decrease-opacity", "increase-opacity"];
|
|
||||||
offset-x = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = "window-x-before - window-x";
|
|
||||||
end = 0;
|
|
||||||
};
|
|
||||||
offset-y = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = "window-y-before - window-y";
|
|
||||||
end = 0;
|
|
||||||
};
|
|
||||||
scale-x = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = "window-width-before / window-width";
|
|
||||||
end = 1;
|
|
||||||
};
|
|
||||||
scale-y = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = "window-height-before / window-height";
|
|
||||||
end = 1;
|
|
||||||
};
|
|
||||||
},
|
|
||||||
# Window open/show animation with spring physics
|
|
||||||
{
|
|
||||||
triggers = ["open", "show"];
|
|
||||||
# Opacity uses spring with clamping to prevent going above 1
|
|
||||||
opacity = {
|
|
||||||
curve = "spring(150, 18, 1.5, true)";
|
|
||||||
start = 0;
|
|
||||||
end = "window-raw-opacity";
|
|
||||||
};
|
|
||||||
# Scale uses spring with bounce for a nice "pop" effect
|
|
||||||
scale-x = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = 0.85;
|
|
||||||
end = 1;
|
|
||||||
};
|
|
||||||
scale-y = {
|
|
||||||
curve = "spring(150, 18, 1.5, false)";
|
|
||||||
start = 0.85;
|
|
||||||
end = 1;
|
|
||||||
};
|
|
||||||
# Center the scaling effect
|
|
||||||
offset-x = "(1 - scale-x) / 2 * window-width";
|
|
||||||
offset-y = "(1 - scale-y) / 2 * window-height";
|
|
||||||
},
|
|
||||||
# Window close/hide animation with spring physics
|
|
||||||
{
|
|
||||||
triggers = ["close", "hide"];
|
|
||||||
opacity = {
|
|
||||||
curve = "spring(150, 18, 1.5, true)";
|
|
||||||
start = "window-raw-opacity";
|
|
||||||
end = 0;
|
|
||||||
};
|
|
||||||
scale-x = {
|
|
||||||
curve = "spring(150, 18, 1.5, true)";
|
|
||||||
start = 1;
|
|
||||||
end = 0.9;
|
|
||||||
};
|
|
||||||
scale-y = {
|
|
||||||
curve = "spring(150, 18, 1.5, true)";
|
|
||||||
start = 1;
|
|
||||||
end = 0.9;
|
|
||||||
};
|
|
||||||
# Center the scaling effect
|
|
||||||
offset-x = "(1 - scale-x) / 2 * window-width";
|
|
||||||
offset-y = "(1 - scale-y) / 2 * window-height";
|
|
||||||
}
|
|
||||||
);
|
|
||||||
|
|
||||||
# Fading
|
services.status-notifier-watcher = {
|
||||||
fading = true;
|
enable = true;
|
||||||
fade-in-step = 0.028;
|
flags = ["--log-level" "DEBUG"];
|
||||||
fade-out-step = 0.028;
|
};
|
||||||
|
|
||||||
# Corners
|
services.autorandr.enable = true;
|
||||||
corner-radius = 10;
|
|
||||||
round-borders = 0;
|
services.random-background = {
|
||||||
rounded-corners-exclude = [
|
enable = true;
|
||||||
"! name~='''",
|
display = "fill";
|
||||||
"window_type = 'dock'",
|
interval = "1h";
|
||||||
"window_type = 'desktop'",
|
imageDirectory = "/var/lib/syncthing/sync/Wallpaper/";
|
||||||
"class_g ?= 'Dunst'"
|
};
|
||||||
|
|
||||||
|
services.xsettingsd.enable = true;
|
||||||
|
|
||||||
|
services.pasystray.enable = true;
|
||||||
|
|
||||||
|
# services.parcellite = {
|
||||||
|
# enable = true;
|
||||||
|
# package = pkgs.clipit;
|
||||||
|
# };
|
||||||
|
|
||||||
|
services.flameshot = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
# Completely disable home-manager's picom - we manage everything ourselves
|
||||||
|
# to work around the libconfig list vs array syntax issue for animations
|
||||||
|
services.picom.enable = false;
|
||||||
|
|
||||||
|
# Our own picom systemd service
|
||||||
|
systemd.user.services.picom = {
|
||||||
|
Unit = {
|
||||||
|
Description = "Picom X11 compositor";
|
||||||
|
After = [ "graphical-session.target" ];
|
||||||
|
PartOf = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
Service = {
|
||||||
|
# Debug logging to file for monitoring
|
||||||
|
ExecStart = "${pkgs.picom}/bin/picom --config %h/.config/picom/picom.conf --log-level=debug --log-file=%h/.local/share/picom/debug.log";
|
||||||
|
Restart = "always";
|
||||||
|
RestartSec = 3;
|
||||||
|
};
|
||||||
|
Install = {
|
||||||
|
WantedBy = [ "graphical-session.target" ];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
|
||||||
|
# Ensure log directory exists
|
||||||
|
xdg.dataFile."picom/.keep".text = "";
|
||||||
|
|
||||||
|
# Write complete picom config directly to avoid home-manager's libconfig generator
|
||||||
|
# which incorrectly uses [] instead of () for the animations list
|
||||||
|
xdg.configFile."picom/picom.conf" = {
|
||||||
|
force = true; # Override home-manager's generated config
|
||||||
|
text = ''
|
||||||
|
# Backend and basic settings
|
||||||
|
backend = "glx";
|
||||||
|
vsync = ${if config.myModules.xmonad.picom.vSync.enable then "true" else "false"};
|
||||||
|
|
||||||
|
# Spring physics animations (mainline picom with spring-physics branch)
|
||||||
|
# Syntax: spring(stiffness, dampening, mass) or spring(stiffness, dampening, mass, clamping)
|
||||||
|
# Set clamping to false for bounce/overshoot effects
|
||||||
|
animations = (
|
||||||
|
# Window move/resize animation with spring physics
|
||||||
|
# "geometry" is alias for "size" + "position" triggers
|
||||||
|
# Suppress opacity changes so they don't interrupt geometry animations
|
||||||
|
{
|
||||||
|
triggers = ["geometry"];
|
||||||
|
suppressions = ["decrease-opacity", "increase-opacity"];
|
||||||
|
offset-x = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = "window-x-before - window-x";
|
||||||
|
end = 0;
|
||||||
|
};
|
||||||
|
offset-y = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = "window-y-before - window-y";
|
||||||
|
end = 0;
|
||||||
|
};
|
||||||
|
scale-x = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = "window-width-before / window-width";
|
||||||
|
end = 1;
|
||||||
|
};
|
||||||
|
scale-y = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = "window-height-before / window-height";
|
||||||
|
end = 1;
|
||||||
|
};
|
||||||
|
},
|
||||||
|
# Window open/show animation with spring physics
|
||||||
|
{
|
||||||
|
triggers = ["open", "show"];
|
||||||
|
# Opacity uses spring with clamping to prevent going above 1
|
||||||
|
opacity = {
|
||||||
|
curve = "spring(150, 18, 1.5, true)";
|
||||||
|
start = 0;
|
||||||
|
end = "window-raw-opacity";
|
||||||
|
};
|
||||||
|
# Scale uses spring with bounce for a nice "pop" effect
|
||||||
|
scale-x = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = 0.85;
|
||||||
|
end = 1;
|
||||||
|
};
|
||||||
|
scale-y = {
|
||||||
|
curve = "spring(150, 18, 1.5, false)";
|
||||||
|
start = 0.85;
|
||||||
|
end = 1;
|
||||||
|
};
|
||||||
|
# Center the scaling effect
|
||||||
|
offset-x = "(1 - scale-x) / 2 * window-width";
|
||||||
|
offset-y = "(1 - scale-y) / 2 * window-height";
|
||||||
|
},
|
||||||
|
# Window close/hide animation with spring physics
|
||||||
|
{
|
||||||
|
triggers = ["close", "hide"];
|
||||||
|
opacity = {
|
||||||
|
curve = "spring(150, 18, 1.5, true)";
|
||||||
|
start = "window-raw-opacity";
|
||||||
|
end = 0;
|
||||||
|
};
|
||||||
|
scale-x = {
|
||||||
|
curve = "spring(150, 18, 1.5, true)";
|
||||||
|
start = 1;
|
||||||
|
end = 0.9;
|
||||||
|
};
|
||||||
|
scale-y = {
|
||||||
|
curve = "spring(150, 18, 1.5, true)";
|
||||||
|
start = 1;
|
||||||
|
end = 0.9;
|
||||||
|
};
|
||||||
|
# Center the scaling effect
|
||||||
|
offset-x = "(1 - scale-x) / 2 * window-width";
|
||||||
|
offset-y = "(1 - scale-y) / 2 * window-height";
|
||||||
|
}
|
||||||
|
);
|
||||||
|
|
||||||
|
# Fading
|
||||||
|
fading = true;
|
||||||
|
fade-in-step = 0.028;
|
||||||
|
fade-out-step = 0.028;
|
||||||
|
|
||||||
|
# Corners
|
||||||
|
corner-radius = 10;
|
||||||
|
round-borders = 0;
|
||||||
|
rounded-corners-exclude = [
|
||||||
|
"! name~='''",
|
||||||
|
"window_type = 'dock'",
|
||||||
|
"window_type = 'desktop'",
|
||||||
|
"class_g ?= 'Dunst'"
|
||||||
];
|
];
|
||||||
round-borders-exclude = [
|
round-borders-exclude = [
|
||||||
"! name~='''"
|
"! name~='''"
|
||||||
@@ -260,5 +261,6 @@ makeEnable config "myModules.xmonad" true {
|
|||||||
# RestartSec = 3;
|
# RestartSec = 3;
|
||||||
# };
|
# };
|
||||||
# };
|
# };
|
||||||
};
|
}
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user