Compare commits

..

1 Commits

Author SHA1 Message Date
f9541ba01b (wip) Run kodi in gamescope 2024-10-21 12:53:32 -07:00
38 changed files with 666 additions and 530 deletions

View File

@@ -1,21 +0,0 @@
This repository contains NixOS configurations for different machines and roles. Here's a brief overview based on the files present:
- **Secrets:**
- `secrets/secrets.yaml`: Contains secret configurations, possibly encrypted or sensitive data.
- **Packages:**
- `packages/`: Nix package definitions.
- **Flake:**
- `flake.nix` and `flake.lock`: Nix Flake configuration files for managing the Nix environment dependencies.
- **Roles:**
- Various directories like `roles/kodi/`, `roles/bluetooth/`, etc., each containing `default.nix` files which possibly define role-specific configurations and modules.
- **Machines:**
- `machines/`: Machine-specific configurations for different machines like `nix-book`, `z790prors`, `boxy`, and `wixos`.
- Each machine has `configuration.nix` and `hardware-configuration.nix`, detailing the machine's system and hardware configuration.
- **Home:**
- `home/`: Pertains to user-specific configurations with different modules and home environment setups. Contains files like `home-nix-book.nix`, `home-z790prors.nix`, etc.
- Includes specific modules for software like Emacs, tmux, i3+sway, etc.

176
flake.lock generated
View File

@@ -1,60 +1,5 @@
{ {
"nodes": { "nodes": {
"doomemacs": {
"flake": false,
"locked": {
"lastModified": 1736881038,
"narHash": "sha256-i0GVHWoIqDcFB9JmEdd9T+qxrEx3ckBlPfTD/yLoNyg=",
"owner": "doomemacs",
"repo": "doomemacs",
"rev": "2bc052425ca45a41532be0648ebd976d1bd2e6c1",
"type": "github"
},
"original": {
"owner": "doomemacs",
"repo": "doomemacs",
"type": "github"
}
},
"emacs-overlay": {
"inputs": {
"nixpkgs": [
"nix-doom-emacs-unstraightened"
],
"nixpkgs-stable": [
"nix-doom-emacs-unstraightened"
]
},
"locked": {
"lastModified": 1738916398,
"narHash": "sha256-JBnztNWoVJIVO0j9lU0//or2FdynJ5GMrdqpT3xCmqs=",
"owner": "nix-community",
"repo": "emacs-overlay",
"rev": "62e6f266d6fc1443d83457c65ef4b860d2f3835a",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "emacs-overlay",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1733328505,
"narHash": "sha256-NeCCThCEP3eCl2l/+27kNNK7QrwZB1IJCrXfrbv5oqU=",
"owner": "edolstra",
"repo": "flake-compat",
"rev": "ff81ac966bb2cae68946d5ed5fc4994f96d0ffec",
"type": "github"
},
"original": {
"owner": "edolstra",
"repo": "flake-compat",
"type": "github"
}
},
"home-manager": { "home-manager": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
@@ -62,11 +7,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1738878603, "lastModified": 1729459288,
"narHash": "sha256-fmhq8B3MvQLawLbMO+LWLcdC2ftLMmwSk+P29icJ3tE=", "narHash": "sha256-gBOVJv+q6Mx8jGvwX7cE6J8+sZmi1uxpRVsO7WxvVuQ=",
"owner": "nix-community", "owner": "nix-community",
"repo": "home-manager", "repo": "home-manager",
"rev": "433799271274c9f2ab520a49527ebfe2992dcfbd", "rev": "1e27f213d77fc842603628bcf2df6681d7d08f7e",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -75,72 +20,13 @@
"type": "github" "type": "github"
} }
}, },
"nix-doom-emacs-unstraightened": {
"inputs": {
"doomemacs": "doomemacs",
"emacs-overlay": "emacs-overlay",
"nixpkgs": [
"nixpkgs"
],
"systems": "systems"
},
"locked": {
"lastModified": 1738917332,
"narHash": "sha256-9YUFZurcctem45ASrnH05nGUORlpWvxL9pPqM7XD92E=",
"owner": "marienz",
"repo": "nix-doom-emacs-unstraightened",
"rev": "20c76d5a3549d195bf164bb147b11c9f8b21f500",
"type": "github"
},
"original": {
"owner": "marienz",
"repo": "nix-doom-emacs-unstraightened",
"type": "github"
}
},
"nixos-wsl": {
"inputs": {
"flake-compat": "flake-compat",
"nixpkgs": "nixpkgs"
},
"locked": {
"lastModified": 1736095716,
"narHash": "sha256-csysw/Szu98QDiA2lhWk9seYOyCebeVEWL89zh1cduM=",
"owner": "nix-community",
"repo": "NixOS-WSL",
"rev": "63c3b4ed1712a3a0621002cd59bfdc80875ecbb0",
"type": "github"
},
"original": {
"owner": "nix-community",
"ref": "main",
"repo": "NixOS-WSL",
"type": "github"
}
},
"nixpkgs": { "nixpkgs": {
"locked": { "locked": {
"lastModified": 1733384649, "lastModified": 1729256560,
"narHash": "sha256-K5DJ2LpPqht7K76bsxetI+YHhGGRyVteTPRQaIIKJpw=", "narHash": "sha256-/uilDXvCIEs3C9l73JTACm4quuHUsIHcns1c+cHUJwA=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "190c31a89e5eec80dd6604d7f9e5af3802a58a13",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "nixos-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"nixpkgs_2": {
"locked": {
"lastModified": 1738680400,
"narHash": "sha256-ooLh+XW8jfa+91F1nhf9OF7qhuA/y1ChLx6lXDNeY5U=",
"owner": "nixos", "owner": "nixos",
"repo": "nixpkgs", "repo": "nixpkgs",
"rev": "799ba5bffed04ced7067a91798353d360788b30d", "rev": "4c2fcb090b1f3e5b47eaa7bd33913b574a11e0a0",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -150,6 +36,22 @@
"type": "github" "type": "github"
} }
}, },
"nixpkgs-stable": {
"locked": {
"lastModified": 1729357638,
"narHash": "sha256-66RHecx+zohbZwJVEPF7uuwHeqf8rykZTMCTqIrOew4=",
"owner": "NixOS",
"repo": "nixpkgs",
"rev": "bb8c2cf7ea0dd2e18a52746b2c3a5b0c73b93c22",
"type": "github"
},
"original": {
"owner": "NixOS",
"ref": "release-24.05",
"repo": "nixpkgs",
"type": "github"
}
},
"plasma-manager": { "plasma-manager": {
"inputs": { "inputs": {
"home-manager": [ "home-manager": [
@@ -160,11 +62,11 @@
] ]
}, },
"locked": { "locked": {
"lastModified": 1736549395, "lastModified": 1729372184,
"narHash": "sha256-XzwkB62Tt5UYoL1jXiHzgk/qz2fUpGHExcSIbyGTtI0=", "narHash": "sha256-Tb2/jJ74pt0nmfprkOW1g5zZphJTNbzLnyDENM+c5+I=",
"owner": "nix-community", "owner": "nix-community",
"repo": "plasma-manager", "repo": "plasma-manager",
"rev": "a53af7f1514ef4cce8620a9d6a50f238cdedec8b", "rev": "9390dadadc58ffda8e494b31ef66a4ae041f6dd1",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -176,9 +78,7 @@
"root": { "root": {
"inputs": { "inputs": {
"home-manager": "home-manager", "home-manager": "home-manager",
"nix-doom-emacs-unstraightened": "nix-doom-emacs-unstraightened", "nixpkgs": "nixpkgs",
"nixos-wsl": "nixos-wsl",
"nixpkgs": "nixpkgs_2",
"plasma-manager": "plasma-manager", "plasma-manager": "plasma-manager",
"sops-nix": "sops-nix" "sops-nix": "sops-nix"
} }
@@ -187,14 +87,15 @@
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixpkgs"
] ],
"nixpkgs-stable": "nixpkgs-stable"
}, },
"locked": { "locked": {
"lastModified": 1738291974, "lastModified": 1729394972,
"narHash": "sha256-wkwYJc8cKmmQWUloyS9KwttBnja2ONRuJQDEsmef320=", "narHash": "sha256-fADlzOzcSaGsrO+THUZ8SgckMMc7bMQftztKFCLVcFI=",
"owner": "Mic92", "owner": "Mic92",
"repo": "sops-nix", "repo": "sops-nix",
"rev": "4c1251904d8a08c86ac6bc0d72cc09975e89aef7", "rev": "c504fd7ac946d7a1b17944d73b261ca0a0b226a5",
"type": "github" "type": "github"
}, },
"original": { "original": {
@@ -202,21 +103,6 @@
"repo": "sops-nix", "repo": "sops-nix",
"type": "github" "type": "github"
} }
},
"systems": {
"locked": {
"lastModified": 1681028828,
"narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=",
"owner": "nix-systems",
"repo": "default",
"rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e",
"type": "github"
},
"original": {
"owner": "nix-systems",
"repo": "default",
"type": "github"
}
} }
}, },
"root": "root", "root": "root",

View File

@@ -3,7 +3,6 @@
inputs = { inputs = {
nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable"; nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable";
nixos-wsl.url = "github:nix-community/NixOS-WSL/main";
sops-nix = { sops-nix = {
url = "github:Mic92/sops-nix"; url = "github:Mic92/sops-nix";
@@ -20,14 +19,9 @@
inputs.nixpkgs.follows = "nixpkgs"; inputs.nixpkgs.follows = "nixpkgs";
inputs.home-manager.follows = "home-manager"; inputs.home-manager.follows = "home-manager";
}; };
nix-doom-emacs-unstraightened = {
url = "github:marienz/nix-doom-emacs-unstraightened";
inputs.nixpkgs.follows = "nixpkgs";
};
}; };
outputs = { self, nixpkgs, nixos-wsl, ... } @ inputs: let outputs = { self, nixpkgs, ... } @ inputs: let
baseModules = [ baseModules = [
./roles ./roles
inputs.sops-nix.nixosModules.sops inputs.sops-nix.nixosModules.sops
@@ -35,10 +29,7 @@
{ {
home-manager.useGlobalPkgs = true; home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true; home-manager.useUserPackages = true;
home-manager.sharedModules = [ home-manager.sharedModules = [ inputs.plasma-manager.homeManagerModules.plasma-manager ];
inputs.plasma-manager.homeManagerModules.plasma-manager
inputs.nix-doom-emacs-unstraightened.hmModule
];
} }
]; ];
in { in {
@@ -49,6 +40,8 @@
./machines/z790prors/configuration.nix ./machines/z790prors/configuration.nix
{ {
home-manager.users.johno = import ./home/home-z790prors.nix; home-manager.users.johno = import ./home/home-z790prors.nix;
home-manager.extraSpecialArgs.customPkgs =
nixpkgs.legacyPackages."${system}".callPackage ./packages {};
} }
]; ];
}; };
@@ -59,6 +52,8 @@
./machines/nix-book/configuration.nix ./machines/nix-book/configuration.nix
{ {
home-manager.users.johno = import ./home/home-nix-book.nix; home-manager.users.johno = import ./home/home-nix-book.nix;
home-manager.extraSpecialArgs.customPkgs =
nixpkgs.legacyPackages."${system}".callPackage ./packages {};
} }
]; ];
}; };
@@ -70,18 +65,8 @@
inputs.home-manager.nixosModules.home-manager inputs.home-manager.nixosModules.home-manager
{ {
home-manager.users.johno = import ./home/home-default.nix; home-manager.users.johno = import ./home/home-default.nix;
} home-manager.extraSpecialArgs.customPkgs =
]; nixpkgs.legacyPackages."${system}".callPackage ./packages {};
};
nixosConfigurations.wixos = nixpkgs.lib.nixosSystem rec {
system = "x86_64-linux";
modules = baseModules ++ [
nixos-wsl.nixosModules.default
./machines/wixos/configuration.nix
inputs.home-manager.nixosModules.home-manager
{
home-manager.users.johno = import ./home/home-default.nix;
} }
]; ];
}; };

View File

@@ -1,8 +1,5 @@
{ pkgs, customPkgs, ... }: { pkgs, customPkgs, ... }:
let
customPkgs = pkgs.callPackage ../packages {};
in
{ {
# Home Manager needs a bit of information about you and the paths it should # Home Manager needs a bit of information about you and the paths it should
# manage. # manage.
@@ -43,7 +40,6 @@ in
pkgs.element-desktop pkgs.element-desktop
pkgs.fd pkgs.fd
#pkgs.fluffychat # security vulnerability in current version #pkgs.fluffychat # security vulnerability in current version
pkgs.goose-cli
pkgs.gzip pkgs.gzip
pkgs.htop pkgs.htop
pkgs.jellyfin-media-player pkgs.jellyfin-media-player
@@ -53,7 +49,6 @@ in
pkgs.less pkgs.less
pkgs.moonlight-qt pkgs.moonlight-qt
pkgs.ncdu pkgs.ncdu
pkgs.nextcloud-talk-desktop
pkgs.pandoc pkgs.pandoc
pkgs.pinentry-qt pkgs.pinentry-qt
#pkgs.pytest #pkgs.pytest
@@ -63,6 +58,8 @@ in
pkgs.waybar pkgs.waybar
pkgs.wofi pkgs.wofi
pkgs.vlc pkgs.vlc
customPkgs.nextcloudTalkDesktop
]; ];
# Home Manager is pretty good at managing dotfiles. The primary way to manage # Home Manager is pretty good at managing dotfiles. The primary way to manage
@@ -98,7 +95,6 @@ in
# /etc/profiles/per-user/johno/etc/profile.d/hm-session-vars.sh # /etc/profiles/per-user/johno/etc/profile.d/hm-session-vars.sh
# #
home.sessionVariables = { home.sessionVariables = {
ENABLE_GAMESCOPE_WSI = "1";
}; };
home.sessionPath = [ home.sessionPath = [
@@ -111,7 +107,6 @@ in
./modules/i3+sway ./modules/i3+sway
./modules/lutris ./modules/lutris
./modules/plasma-manager ./modules/plasma-manager
./modules/tmux
]; ];
programs.bash.enable = true; programs.bash.enable = true;

View File

@@ -3,6 +3,7 @@
{ {
imports = [ imports = [
./home-default.nix ./home-default.nix
./modules/hyprland/nix-book.nix
]; ];
home.i3_sway.extraSwayConfig = { home.i3_sway.extraSwayConfig = {

View File

@@ -3,5 +3,6 @@
{ {
imports = [ imports = [
./home-default.nix ./home-default.nix
./modules/hyprland/z790prors.nix
]; ];
} }

View File

@@ -2,15 +2,21 @@
with lib; with lib;
{ let
doomSync = (let
git = pkgs.git;
in ''
export PATH=${pkgs.emacs}/bin:${git}/bin:$PATH
${config.xdg.configHome}/emacs/bin/doom sync -u -j $((`nproc`/4*3))
'');
in {
config = { config = {
home.packages = [ home.packages = [
pkgs.emacs-all-the-icons-fonts pkgs.emacs-all-the-icons-fonts
pkgs.fontconfig pkgs.fontconfig
pkgs.graphviz pkgs.graphviz
pkgs.isort pkgs.isort
pkgs.nerd-fonts.fira-code pkgs.nerdfonts
pkgs.nerd-fonts.droid-sans-mono
pkgs.nil # nix lsp language server pkgs.nil # nix lsp language server
pkgs.nixfmt-rfc-style pkgs.nixfmt-rfc-style
(pkgs.ripgrep.override {withPCRE2 = true;}) (pkgs.ripgrep.override {withPCRE2 = true;})
@@ -19,15 +25,43 @@ with lib;
pkgs.python3 pkgs.python3
]; ];
programs.doom-emacs = {
#enable = true;
doomDir = ./doom;
};
fonts.fontconfig.enable = true; fonts.fontconfig.enable = true;
home.file = {
".config/emacs" = {
source = fetchGit {
url = "https://github.com/doomemacs/doomemacs.git";
# When updating me, remember to run `doom sync`
rev = "5ad99220b86ae1bf421861dfad24492d768ac4d9";
};
# We need to use recursive mode here or else doom fails to sync for
# some reason related to the permissions on the synced path. I'm not
# quite sure of everything that's going on here.
recursive = true;
# Because `recursive = true` will cause this to sync every single
# activation, we turn this off here.
#
# There's probably a way we could do better detection of this within
# our onChange shell?
#
# onChange = doomSync;
};
};
home.sessionVariables = { home.sessionVariables = {
DOOMLOCALDIR = "${config.xdg.dataHome}/doom";
EDITOR = "emacs -nw"; EDITOR = "emacs -nw";
}; };
home.sessionPath = [
"${config.xdg.configHome}/emacs/bin"
];
xdg.configFile."doom" = {
source = ./doom;
# Sync doom if we updated the config
onChange = doomSync;
};
}; };
} }

View File

@@ -28,7 +28,6 @@
;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to ;; up, `M-x eval-region' to execute elisp code, and 'M-x doom/reload-font' to
;; refresh your font settings. If Emacs still can't find your font, it likely ;; refresh your font settings. If Emacs still can't find your font, it likely
;; wasn't installed correctly. Font issues are rarely Doom issues! ;; wasn't installed correctly. Font issues are rarely Doom issues!
(setq doom-font (font-spec :family "Fira Code"))
;; There are two ways to load a theme. Both assume the theme is installed and ;; There are two ways to load a theme. Both assume the theme is installed and
;; available. You can either set `doom-theme' or manually load a theme with the ;; available. You can either set `doom-theme' or manually load a theme with the
@@ -44,11 +43,7 @@
(setq org-directory "~/org/") (setq org-directory "~/org/")
(after! org (after! org
(setq org-agenda-span 'week (setq org-agenda-span 'week
my-agenda-dirs '("projects" "roam") org-agenda-files `(,org-directory ,(concat org-directory "roam/"))
org-agenda-files (cons org-directory (mapcan (lambda (x) (directory-files-recursively
(expand-file-name x org-directory)
"\.org$"))
my-agenda-dirs))
org-log-done 'time org-log-done 'time
org-agenda-custom-commands '(("n" "Agenda" org-agenda-custom-commands '(("n" "Agenda"
((agenda "") ((agenda "")

View File

@@ -149,7 +149,7 @@
;;lua ; one-based indices? one-based indices ;;lua ; one-based indices? one-based indices
markdown ; writing docs for people to ignore markdown ; writing docs for people to ignore
;;nim ; python + lisp at the speed of c ;;nim ; python + lisp at the speed of c
(nix +tree-sitter) ; I hereby declare "nix geht mehr!" (nix +tree-sitter +lsp) ; I hereby declare "nix geht mehr!"
;;ocaml ; an objective camel ;;ocaml ; an objective camel
(org +roam2) ; organize your plain life in plain text (org +roam2) ; organize your plain life in plain text
;;php ; perl's insecure younger brother ;;php ; perl's insecure younger brother

View File

@@ -0,0 +1,94 @@
{ inputs, ... }:
{
imports = [
./hyprpaper.nix
];
wayland.windowManager.hyprland = {
enable = true;
plugins = [ inputs.hy3.packages.x86_64-linux.hy3 ];
settings = {
"$mod" = "SUPER";
"$terminal" = "kitty";
"$fileManager" = "dolphin";
"$menu" = "wofi --show drun";
exec-once = [
"waybar"
"dunst"
];
xwayland = {
force_zero_scaling = true;
};
input = {
kb_layout = "us";
kb_options = "caps:escape";
follow_mouse = 1;
touchpad.natural_scroll = false;
};
windowrulev2 = [
# I can guess, but I should figure out what this actually does
"suppressevent maximize, class:.*"
];
general.layout = "hy3";
bind =
[
"SHIFT_$mod, Q, killactive"
"SHIFT_$mod, M, exit"
"$mod, D, exec, $menu"
"$mod, Return, exec, $terminal"
"$mod, H, hy3:movefocus, l"
"$mod, L, hy3:movefocus, r"
"$mod, K, hy3:movefocus, u"
"$mod, J, hy3:movefocus, d"
"SHIFT_$mod, H, hy3:movewindow, l"
"SHIFT_$mod, L, hy3:movewindow, r"
"SHIFT_$mod, K, hy3:movewindow, u"
"SHIFT_$mod, J, hy3:movewindow, d"
"$mod, V, hy3:makegroup, opposite"
"$mod, W, hy3:changegroup, toggletab"
"$mod, A, hy3:changefocus, raise"
"SHIFT_$mod, A, hy3:changefocus, lower"
"$mod, M, fullscreen, 0"
"$mod, E, hy3:expand, expand"
"SHIFT_$mod, E, hy3:expand, base"
"$mod, Q, hy3:warpcursor"
]
++ (
# workspaces
# binds $mod + [shift +] {1..10} to [move to] workspace {1..10}
builtins.concatLists (builtins.genList (
x: let
ws = let
c = (x + 1) / 10;
in
builtins.toString (x + 1 - (c * 10));
in [
"$mod, ${ws}, workspace, ${toString (x + 1)}"
"$mod SHIFT, ${ws}, hy3:movetoworkspace, ${toString (x + 1)}"
]
)
10)
);
bindm =
[
"$mod, mouse:272, movewindow"
"$mod, mouse:273, resizewindow"
];
};
};
}

View File

@@ -0,0 +1,21 @@
{ config, lib, pkgs, ... }:
{
services.hyprpaper = {
enable = true;
settings = {
ipc = "on";
splash = false;
preload = [
"${config.xdg.dataHome}/wallpaper.jpg"
];
wallpaper = [
",${config.xdg.dataHome}/wallpaper.jpg"
];
};
};
xdg.dataFile."wallpaper.jpg" = {
source = ./wallpaper.jpg;
};
}

View File

@@ -0,0 +1,5 @@
{ config, lib, pkgs, ... }:
{
wayland.windowManager.hyprland.settings.monitor = ",preferred,2880x1800@90.00Hz,1.33333";
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 842 KiB

View File

@@ -0,0 +1,16 @@
{ config, lib, pkgs, ... }:
{
wayland.windowManager.hyprland.settings.monitor = "DP-1,3440x1440@164.90,0x0,1.33333,vrr,1";
wayland.windowManager.hyprland.settings.env = [
"LIBVA_DRIVER_NAME,nvidia"
"XDG_SESSION_TYPE,wayland"
"GBM_BACKEND,nvidia-drm"
"__GLX_VENDOR_LIBRARY_NAME,nvidia"
"NVD_BACKEND,direct"
"ELECTRON_OZONE_PLATFORM_HINT,auto"
"NIXOS_OZONE_WL,1"
];
wayland.windowManager.hyprland.settings.cursor.no_hardware_cursors = true;
}

View File

@@ -1,18 +1,27 @@
{ config, lib, pkgs, ... }: { config, lib, pkgs, ... }:
# The current KDE config can be output with the command: # The following can be generated with the command:
# nix run github:nix-community/plasma-manager # nix run github:nix-community/plasma-manager
# #
# Plasma-manager options documentation # Plasma-manager options documentation
# https://nix-community.github.io/plasma-manager/options.xhtml # https://nix-community.github.io/plasma-manager/options.xhtml
# #
# TODO: (ambitious) Add Kmail support to plasma-manager # Polonium usage
# https://github.com/zeroxoneafour/polonium/blob/master/docs/usage.md
#
# TODO: Extract this configuration into something that's a bit easier to manage
# TODO: Update shortcuts for better window/tiling/desktop management akin to i3wm
# TODO(ambitious): Add Kmail support to plasma-manager
{ {
programs.plasma = { programs.plasma = {
enable = true; enable = true;
overrideConfig = true; overrideConfig = true;
kwin = {
scripts.polonium.enable = true;
};
hotkeys.commands."launch-konsole" = { hotkeys.commands."launch-konsole" = {
name = "Launch Konsole"; name = "Launch Konsole";
key = "Meta+Return"; key = "Meta+Return";
@@ -58,7 +67,46 @@
"Activate Window Demanding Attention" = "Meta+Ctrl+A"; "Activate Window Demanding Attention" = "Meta+Ctrl+A";
"PoloniumCycleEngine" = "Meta+|,none,Polonium: Cycle Engine";
"PoloniumFocusAbove" = "Meta+K,none,Polonium: Focus Above";
"PoloniumFocusBelow" = "Meta+J,none,Polonium: Focus Below";
"PoloniumFocusLeft" = "Meta+H,none,Polonium: Focus Left";
"PoloniumFocusRight" = "Meta+L,none,Polonium: Focus Right";
"PoloniumInsertAbove" = "Meta+Shift+K,none,Polonium: Insert Above";
"PoloniumInsertBelow" = "Meta+Shift+J,none,Polonium: Insert Below";
"PoloniumInsertLeft" = "Meta+Shift+H,none,Polonium: Insert Left";
"PoloniumInsertRight" = "Meta+Shift+L,none,Polonium: Insert Right";
"PoloniumOpenSettings" = "Meta+\\\\,none,Polonium: Open Settings Dialog";
"PoloniumResizeAbove" = "Meta+Ctrl+K,none,Polonium: Resize Above";
"PoloniumResizeBelow" = "Meta+Ctrl+J,none,Polonium: Resize Below";
"PoloniumResizeLeft" = "Meta+Ctrl+H,none,Polonium: Resize Left";
"PoloniumResizeRight" = "Meta+Ctrl+L,none,Polonium: Resize Right";
"PoloniumRetileWindow" = "Meta+Shift+Space,none,Polonium: Retile Window";
"PoloniumSwitchBTree" = [ ];
"PoloniumSwitchHalf" = [ ];
"PoloniumSwitchKwin" = [ ];
"PoloniumSwitchMonocle" = [ ];
"PoloniumSwitchThreeColumn" = [ ];
"Show Desktop" = "Meta+D"; "Show Desktop" = "Meta+D";
"Switch to Desktop 1" = "Meta+1,,Switch to Desktop 1";
"Switch to Desktop 2" = "Meta+2,,Switch to Desktop 2";
"Switch to Desktop 3" = "Meta+3,,Switch to Desktop 3";
"Switch to Desktop 4" = "Meta+4,,Switch to Desktop 4";
"Switch to Desktop 5" = "Meta+5,,Switch to Desktop 5";
"Switch to Desktop 6" = "none,,Switch to Desktop 6";
"Switch to Desktop 7" = "none,,Switch to Desktop 7";
"Switch to Desktop 8" = "none,,Switch to Desktop 8";
"Switch to Desktop 9" = "none,,Switch to Desktop 9";
"Window to Desktop 1" = "Meta+!,,Window to Desktop 1";
"Window to Desktop 2" = "Meta+@,,Window to Desktop 2";
"Window to Desktop 3" = "Meta+#,,Window to Desktop 3";
"Window to Desktop 4" = "Meta+$,,Window to Desktop 4";
"Window to Desktop 5" = "Meta+%,,Window to Desktop 5";
"Window to Desktop 6" = "none,,Window to Desktop 6";
"Window to Desktop 7" = "none,,Window to Desktop 7";
"Window to Desktop 8" = "none,,Window to Desktop 8";
"Window to Desktop 9" = "none,,Window to Desktop 9";
"Walk Through Windows" = "Alt+Tab"; "Walk Through Windows" = "Alt+Tab";
"Walk Through Windows (Reverse)" = "Alt+Shift+Tab"; "Walk Through Windows (Reverse)" = "Alt+Shift+Tab";
@@ -107,21 +155,9 @@
configFile = { configFile = {
kwinrc.Desktops.Number = { kwinrc.Desktops.Number = {
value = 10; value = 9;
immutable = true; immutable = true;
}; };
kcminputrc.Libinput = {
AccelerationProfile = "adaptive";
PointerAcceleration = 0.5;
};
kcminputrc.Mouse = {
X11LibInputXAccelProfileFlat = false;
XLbInptAccelProfileFlat = false;
};
kdeglobals.KDE.LookAndFeelPackage = "org.kde.breezedark.desktop";
}; };
}; };
} }

View File

@@ -1,52 +0,0 @@
{ config, lib, pkgs, ... }:
let
tokyo-night = pkgs.tmuxPlugins.mkTmuxPlugin {
pluginName = "tokyo-night";
rtpFilePath = "tokyo-night.tmux";
version = "1.6.1";
src = pkgs.fetchFromGitHub {
owner = "janoamaral";
repo = "tokyo-night-tmux";
rev = "d610ced20d5f602a7995854931440e4a1e0ab780";
sha256 = "sha256-17vEgkL7C51p/l5gpT9dkOy0bY9n8l0/LV51mR1k+V8=";
};
};
in
{
programs.tmux.enable = true;
programs.tmux.terminal = "tmux-direct";
programs.tmux.keyMode = "vi";
programs.tmux.escapeTime = 0;
programs.tmux.mouse = true;
programs.tmux.newSession = true;
programs.tmux.historyLimit = 50000;
programs.tmux.clock24 = true;
programs.tmux.baseIndex = 1;
programs.tmux.prefix = "M-\\\\";
programs.tmux.plugins = with pkgs; [
tmuxPlugins.cpu
tmuxPlugins.battery
tmuxPlugins.better-mouse-mode
tmuxPlugins.net-speed
tmuxPlugins.online-status
tmuxPlugins.pain-control
tmuxPlugins.tilish
tmuxPlugins.yank
{
plugin = tmuxPlugins.resurrect;
extraConfig = "set -g @resurrect-strategy-nvim 'session'";
}
{
plugin = tmuxPlugins.continuum;
extraConfig = ''
set -g @continuum-restore 'on'
set -g @continuum-save-interval '15' # minutes
'';
}
tokyo-night
];
}

View File

@@ -19,6 +19,10 @@ with lib;
autologin = true; autologin = true;
wayland = true; wayland = true;
}; };
spotifyd = {
enable = true;
deviceType = "t_v";
};
users.enable = true; users.enable = true;
}; };

View File

@@ -12,13 +12,7 @@
roles = { roles = {
audio.enable = true; audio.enable = true;
bluetooth.enable = true; bluetooth.enable = true;
desktop = { desktop.enable = true;
enable = true;
wayland = true;
gaming = true;
kde = true;
sddm = true;
};
nfs-mounts.enable = true; nfs-mounts.enable = true;
printing.enable = true; printing.enable = true;
spotifyd.enable = true; spotifyd.enable = true;

View File

@@ -29,7 +29,6 @@
swapDevices = swapDevices =
[ { device = "/dev/disk/by-uuid/ec1f70ea-27b6-4646-ad3b-eac41bd83e3e"; } [ { device = "/dev/disk/by-uuid/ec1f70ea-27b6-4646-ad3b-eac41bd83e3e"; }
]; ];
zramSwap.enable = true;
# Enables DHCP on each ethernet and wireless interface. In case of scripted networking # Enables DHCP on each ethernet and wireless interface. In case of scripted networking
# (the default) this is the recommended approach. When using systemd-networkd it's # (the default) this is the recommended approach. When using systemd-networkd it's

View File

@@ -1,37 +0,0 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page, on
# https://search.nixos.org/options and in the NixOS manual (`nixos-help`).
# NixOS-WSL specific options are documented on the NixOS-WSL repository:
# https://github.com/nix-community/NixOS-WSL
{ config, lib, pkgs, ... }:
{
imports = [
];
roles = {
desktop = {
enable = true;
wayland = true;
};
};
networking.hostName = "wixos";
wsl.enable = true;
wsl.defaultUser = "johno";
wsl.startMenuLaunchers = true;
wsl.useWindowsDriver = true;
wsl.wslConf.network.hostname = "wixos";
wsl.wslConf.user.default = "johno";
# 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 = "24.05"; # Did you read the comment?
}

View File

@@ -0,0 +1,63 @@
# Edit this configuration file to define what should be installed on
# your system. Help is available in the configuration.nix(5) man page
# and in the NixOS manual (accessible by running nixos-help).
{ ... }:
{
imports =
[ # Include the results of the hardware scan.
./hardware-configuration.nix
];
roles = {
audio.enable = true;
desktop = {
enable = true;
x11Only = true;
};
kodi.enable = true;
nfs-mounts.enable = true;
printing.enable = true;
spotifyd.enable = true;
users = {
enable = true;
extraGroups = [ "input" "libvirtd" ];
kids = true;
};
virtualisation.enable = true;
};
# Use the systemd-boot EFI boot loader.
boot.loader.systemd-boot.enable = true;
boot.loader.efi.canTouchEfiVariables = true;
boot.loader.grub.useOSProber = true;
networking = {
hostName = "z790prors-nix"; # Define your hostname.
domain = "oglehome";
defaultGateway = "10.0.0.1";
nameservers = [ "10.0.0.1" ];
# The global useDHCP flag is deprecated, therefore explicitly set to false here.
# Per-interface useDHCP will be mandatory in the future, so this generated config
# replicates the default behaviour.
useDHCP = false;
interfaces.enp3s0.ipv4.addresses = [{
address = "10.0.0.37";
prefixLength = 24;
}];
};
# TODO: Figure out something with this
nix.settings.secret-key-files = /root/cache-priv-key.pem;
# 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. Its 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 = "21.11"; # Did you read the comment?
}

View File

@@ -0,0 +1,77 @@
# 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, modulesPath, ... }:
{
imports =
[ (modulesPath + "/installer/scan/not-detected.nix")
];
boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ];
boot.initrd.kernelModules = [
"nvidia"
"nvidia_modeset"
"nvidia_uvm"
"nvidia_drm"
];
boot.kernelParams = [
"nvidia_drm.fbdev=1"
"nvidia_drm.modeset=1"
];
boot.kernelModules = [ "kvm-intel" ];
boot.extraModulePackages = [ ];
hardware.graphics.enable = true;
services.xserver.videoDrivers = ["nvidia"];
services.xserver.screenSection = ''Option "metamodes" "3440x1440_165 +0+0"'';
services.xserver.enableTearFree = true;
hardware.nvidia = {
modesetting.enable = true;
powerManagement.enable = false;
powerManagement.finegrained = false;
open = false;
nvidiaSettings = true;
package = config.boot.kernelPackages.nvidiaPackages.production;
#package = config.boot.kernelPackages.nvidiaPackages.mkDriver {
#version = "555.58";
#sha256_64bit = "sha256-bXvcXkg2kQZuCNKRZM5QoTaTjF4l2TtrsKUvyicj5ew=";
#sha256_aarch64 = lib.fakeSha256;
#openSha256 = lib.fakeSha256;
#settingsSha256 = "sha256-vWnrXlBCb3K5uVkDFmJDVq51wrCoqgPF03lSjZOuU8M=";
#persistencedSha256 = lib.fakeSha256;
#};
};
environment.sessionVariables = {
KWIN_DRM_ALLOW_NVIDIA_COLORSPACE = "1";
};
fileSystems."/" =
{ device = "/dev/disk/by-uuid/8d996d13-6d55-4524-83a2-6f6fb47a09ea";
fsType = "btrfs";
};
fileSystems."/boot" =
{ device = "/dev/disk/by-uuid/7445-C336";
fsType = "vfat";
};
fileSystems."/arch" =
{ device = "/dev/disk/by-label/endeavouros";
fsType = "btrfs";
};
swapDevices = [ ];
services.beesd.filesystems = {
root = {
spec = "LABEL=nixos";
hashTableSizeMB = 4096;
verbosity = "crit";
};
};
powerManagement.cpuFreqGovernor = lib.mkDefault "powersave";
hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware;
}

View File

@@ -1,4 +1,4 @@
{ pkgs, ... }: { pkgs, ... }:
{ {
vulkanHDRLayer = pkgs.callPackage ./vulkan-hdr-layer {}; nextcloudTalkDesktop = pkgs.callPackage ./nextcloud-talk-desktop {};
} }

View File

@@ -0,0 +1,79 @@
{ lib
, stdenv
, fetchzip
, autoPatchelfHook
, nss
, cairo
, xorg
, libxkbcommon
, alsa-lib
, at-spi2-core
, mesa
, pango
, libdrm
, vivaldi-ffmpeg-codecs
, gtk3
, libGL
, libglvnd
, systemd
}:
stdenv.mkDerivation (finalAttrs: {
pname = "nextcloud-talk-desktop";
version = "0.29.0";
# Building from source would require building also building Server and Talk components
# See https://github.com/nextcloud/talk-desktop?tab=readme-ov-file#%EF%B8%8F-prerequisites
src = fetchzip {
url = "https://github.com/nextcloud-releases/talk-desktop/releases/download/v${finalAttrs.version}/Nextcloud.Talk-linux-x64-${finalAttrs.version}.zip";
hash = "sha256-fBIeNv8tfrVTFExLQDBPhIazvbsJ7a76+W9G0cuQDlw=";
stripRoot = false;
};
nativeBuildInputs = [ autoPatchelfHook ];
buildInputs = [
nss
cairo
alsa-lib
at-spi2-core
pango
libdrm
libxkbcommon
gtk3
vivaldi-ffmpeg-codecs
mesa
libGL
libglvnd
] ++ (with xorg; [libX11 libXcomposite libXdamage libXrandr libXfixes libXcursor]);
# Required to launch the application and proceed past the zygote_linux fork() process
# Fixes `Zygote could not fork`
runtimeDependencies = [ systemd ];
preInstall = ''
mkdir -p $out/bin
mkdir -p $out/opt
cp -r $src/* $out/opt/
'';
installPhase = ''
runHook preInstall
# Link the application in $out/bin away from contents of `preInstall`
ln -s "$out/opt/Nextcloud Talk-linux-x64/Nextcloud Talk" $out/bin/${finalAttrs.pname}
runHook postInstall
'';
meta = with lib; {
description = "Nextcloud Talk Desktop Client Preview";
homepage = "https://github.com/nextcloud/talk-desktop";
changelog = "https://github.com/nextcloud/talk-desktop/blob/${finalAttrs.version}/CHANGELOG.md";
license = licenses.agpl3Only;
maintainers = with maintainers; [ kashw2 ];
mainProgram = finalAttrs.pname;
};
})

View File

@@ -1,34 +0,0 @@
{ lib, stdenv, fetchFromGitHub, meson, pkg-config, vulkan-loader, ninja, writeText, vulkan-headers, vulkan-utility-libraries, jq, libX11, libXrandr, libxcb, wayland, wayland-scanner }:
stdenv.mkDerivation rec {
pname = "vulkan-hdr-layer";
version = "63d2eec";
src = (fetchFromGitHub {
owner = "Zamundaaa";
repo = "VK_hdr_layer";
rev = "869199cd2746e7f69cf19955153080842b6dacfc";
fetchSubmodules = true;
hash = "sha256-xfVYI+Aajmnf3BTaY2Ysg5fyDO6SwDFGyU0L+F+E3is=";
}).overrideAttrs (_: {
GIT_CONFIG_COUNT = 1;
GIT_CONFIG_KEY_0 = "url.https://github.com/.insteadOf";
GIT_CONFIG_VALUE_0 = "git@github.com:";
});
nativeBuildInputs = [ vulkan-headers meson ninja pkg-config jq ];
buildInputs = [ vulkan-headers vulkan-loader vulkan-utility-libraries libX11 libXrandr libxcb wayland wayland-scanner ];
# Help vulkan-loader find the validation layers
setupHook = writeText "setup-hook" ''
addToSearchPath XDG_DATA_DIRS @out@/share
'';
meta = with lib; {
description = "Layers providing Vulkan HDR";
homepage = "https://github.com/Zamundaaa/VK_hdr_layer";
platforms = platforms.linux;
license = licenses.mit;
};
}

View File

@@ -13,22 +13,19 @@ in
config = mkIf cfg.enable config = mkIf cfg.enable
{ {
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
alsa-utils
paprefs paprefs
pavucontrol pavucontrol
pulsemixer pulsemixer
]; ];
services.pipewire = { hardware.pulseaudio.enable = true;
enable = true; hardware.pulseaudio.package = pkgs.pulseaudioFull;
pulse.enable = true; hardware.pulseaudio.support32Bit = true;
}; hardware.pulseaudio.extraConfig = "
services.pulseaudio = { load-module module-combine-sink
package = pkgs.pulseaudioFull; load-module module-switch-on-connect
extraConfig = '' ";
load-module module-combine-sink
load-module module-switch-on-connect
'';
};
}; };
} }

View File

@@ -31,48 +31,32 @@ with lib;
}; };
time.timeZone = "America/Los_Angeles"; time.timeZone = "America/Los_Angeles";
services.xserver.xkb = {
layout = "us";
variant = "";
options = "caps:escape";
};
# Don't go to emergency mode if we aren't able to mount filesystems.
# This is silly if you have multiple hard drives or partitions
# configured on a machine and then one goes away intentionally or
# unintentionally. If the system is already booting, let it continue
# to try and boot.
systemd.enableEmergencyMode = false;
# Enable the OpenSSH daemon. # Enable the OpenSSH daemon.
services.openssh.enable = true; services.openssh.enable = true;
environment.systemPackages = with pkgs; [ environment.systemPackages = with pkgs; [
vim # Do not forget to add an editor to edit configuration.nix! The Nano editor is also installed by default.
git git
glances
pciutils
tree
usbutils
vim
]; ];
nix = { nix = {
package = pkgs.nix; package = pkgs.nixFlakes;
# distributedBuilds = true; distributedBuilds = true;
# buildMachines = [{ buildMachines = [{
# hostName = "z790prors.oglehome"; hostName = "z790prors.oglehome";
# system = "x86_64-linux"; system = "x86_64-linux";
# protocol = "ssh-ng"; protocol = "ssh-ng";
# sshUser = "johno"; sshUser = "johno";
# sshKey = "/root/.ssh/id_ed25519"; sshKey = "/root/.ssh/id_ed25519";
# maxJobs = 3; maxJobs = 3;
# speedFactor = 2; speedFactor = 2;
# }]; }];
settings = { settings = {
experimental-features = [ "nix-command" "flakes" ]; experimental-features = [ "nix-command" "flakes" ];
max-jobs = "auto"; max-jobs = "auto";
trusted-users = [ "johno" ]; trusted-users = [ "johno" ];
substituters = [ substituters = [
"https://hyprland.cachix.org"
]; ];
}; };

View File

@@ -4,33 +4,131 @@ with lib;
let let
cfg = config.roles.desktop; cfg = config.roles.desktop;
basePackages = with pkgs; [
brightnessctl
mangohud # Should probably get refactored with steam/gamescope out to a gaming role
polonium # auto tiling kwin addon
];
x11BasePackages = with pkgs; [
];
x11OnlyPackages = with pkgs; [
emacs
];
waylandBasePackages = with pkgs; [
grim
slurp
wl-clipboard
mako
];
waylandOnlyPackages = with pkgs; [
emacs-gtk
];
in in
{ {
options.roles.desktop = { options.roles.desktop = {
enable = mkEnableOption "Enable the desktop role."; enable = mkEnableOption "Enable the desktop role";
x11 = mkOption { type = types.bool; default = false; description = "Enable X11 support."; }; x11Only = mkOption {
wayland = mkOption { type = types.bool; default = false; description = "Enable Wayland support."; }; type = types.bool;
kde = mkOption { type = types.bool; default = false; description = "Enable KDE."; }; default = false;
gaming = mkOption { type = types.bool; default = false; description = "Enable gaming support."; }; };
sddm = mkOption { type = types.bool; default = false; description = "Enable SDDM greeter."; };
}; };
imports = [ config = mkIf cfg.enable
./x11.nix {
./wayland.nix services.xserver.xkb = {
./gaming.nix layout = "us";
./kde.nix variant = "";
./sddm.nix options = "caps:escape";
]; };
services.xserver.enable = true;
config = mkIf cfg.enable { services.displayManager.sddm = {
environment.systemPackages = with pkgs; [ enable = true;
brightnessctl wayland.enable = !cfg.x11Only;
emacs-nox };
]; services.desktopManager.plasma6.enable = true;
services.xserver.windowManager.i3 = {
enable = true;
extraPackages = with pkgs; [
dmenu
i3status
i3lock
];
};
programs.dconf.enable = true;
services.gnome.gnome-keyring.enable = true;
programs.sway = mkIf (!cfg.x11Only) {
enable = true;
wrapperFeatures.gtk = true;
};
programs.light.enable = mkIf (!cfg.x11Only) true;
programs.kdeconnect.enable = true;
programs.java.enable = true;
programs.gamemode = {
enable = true;
};
programs.gamescope = {
enable = true;
#capSysNice = true;
args = [
#"--adaptive-sync"
#"--nested-refresh 165"
#"--backend wayland"
"--hdr-enabled"
"--hdr-itm-enable"
"--hdr-debug-force-output"
"--mangoapp"
"--rt"
"--steam"
#"--xwayland-count 2"
];
env = {
#PROTON_DISABLE_NVAPI = "1";
MANGOHUD = "1";
#MANGOHUD_CONFIG = "cpu_temp gpu_temp ram vram";
};
};
programs.steam = {
enable = true;
remotePlay.openFirewall = true;
localNetworkGameTransfers.openFirewall = true;
gamescopeSession = {
enable = true;
};
#package = pkgs.steam.override {
#withJava = true;
#withPrimus = true;
#extraPkgs = pkgs: [ bumblebee glxinfo ];
#};
};
services.sunshine = {
enable = true;
autoStart = true;
capSysAdmin = true;
openFirewall = true;
};
virtualisation.docker.enable = true;
users.extraGroups.docker.members = [ "johno" ];
environment.systemPackages = with pkgs; mkMerge [
basePackages
x11BasePackages
(mkIf cfg.x11Only x11OnlyPackages)
# TODO: Do we need a "wayland only" mode?
(mkIf (!cfg.x11Only) waylandBasePackages)
(mkIf (!cfg.x11Only) waylandOnlyPackages)
];
};
programs.dconf.enable = true;
services.gnome.gnome-keyring.enable = true;
programs.kdeconnect.enable = true;
};
} }

View File

@@ -1,17 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkIf (cfg.enable && cfg.gaming) {
environment.systemPackages = with pkgs; [
steam
lutris
];
# Possibly other gaming specific services or settings
};
}

View File

@@ -1,12 +0,0 @@
{ config, lib, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkIf (cfg.enable && cfg.kde) {
services.desktopManager.plasma6.enable = true;
};
}

View File

@@ -1,16 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
{
config = {
environment.systemPackages = with pkgs; [
brightnessctl
emacs-nox
];
programs.dconf.enable = true;
services.gnome.gnome-keyring.enable = true;
programs.kdeconnect.enable = true;
};
}

View File

@@ -1,15 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkIf (cfg.enable && cfg.sddm) {
services.displayManager.sddm = {
enable = true;
wayland.enable = (!cfg.x11 && cfg.wayland);
};
};
}

View File

@@ -1,23 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkIf (cfg.enable && cfg.wayland) {
programs.sway = {
enable = true;
wrapperFeatures.gtk = true;
};
programs.light.enable = true;
environment.systemPackages = with pkgs; [
grim
slurp
wl-clipboard
mako
];
};
}

View File

@@ -1,19 +0,0 @@
{ lib, config, pkgs, ... }:
with lib;
let
cfg = config.roles.desktop;
in
{
config = mkIf (cfg.enable && cfg.x11) {
services.xserver = {
enable = true;
windowManager.i3 = {
enable = true;
extraPackages = with pkgs; [ dmenu i3status i3lock ];
};
};
};
}

View File

@@ -38,7 +38,18 @@ in
(mkIf cfg.wayland { (mkIf cfg.wayland {
cage = mkIf cfg.wayland { cage = mkIf cfg.wayland {
user = "kodi"; user = "kodi";
program = "${kodiPkg}/bin/kodi-standalone"; #program = "gamescope -f --hdr-enabled ${kodiPkg}/bin/kodi-standalone";
program =
let
kodiGamescope = pkgs.writeShellApplication {
name = "kodi-gamescope";
runtimeInputs = [ kodiPkg pkgs.gamescope ];
text = ''
${pkgs.gamescope}/bin/gamescope --hdr-enabled -f -- ${kodiPkg}/bin/kodi-standalone
'';
};
in
"${lib.getExe kodiGamescope}";
enable = true; enable = true;
}; };
xserver = { xserver = {

View File

@@ -8,29 +8,38 @@ in
{ {
options.roles.spotifyd = { options.roles.spotifyd = {
enable = mkEnableOption "Enable the spotifyd role"; enable = mkEnableOption "Enable the spotifyd role";
deviceType = mkOption {
default = "computer";
};
}; };
config = mkIf cfg.enable config = mkIf cfg.enable
{ {
roles.audio.enable = true; roles.audio.enable = true;
hardware.pulseaudio.enable = true;
hardware.pulseaudio.extraConfig = ''
unload-module module-native-protocol-unix
load-module module-native-protocol-unix auth-anonymous=1
'';
hardware.pulseaudio.systemWide = true;
services.spotifyd = { services.spotifyd = {
enable = true; enable = true;
settings = { settings = {
global = { global = {
use_mpris = false; use_mpris = false;
backend = "alsa"; backend = "pulseaudio";
device = "sysdefault";
bitrate = 320; bitrate = 320;
cache_path = ""; cache_path = "";
zeroconf_port = 1234; zeroconf_port = 5354;
autoplay = false; autoplay = false;
device_type = cfg.deviceType;
}; };
}; };
}; };
networking.firewall.allowedTCPPorts = [ networking.firewall.allowedTCPPorts = [
1234 5354
57621 57621
]; ];
networking.firewall.allowedUDPPorts = [ networking.firewall.allowedUDPPorts = [

View File

@@ -25,7 +25,7 @@ in
users.users.johno = { users.users.johno = {
isNormalUser = true; isNormalUser = true;
description = "John Ogle"; description = "John Ogle";
extraGroups = [ "wheel" "networkmanager" "audio" "video" ] ++ cfg.extraGroups; extraGroups = [ "wheel" "networkmanager" "audio" ] ++ cfg.extraGroups;
}; };
users.users.eli = mkIf cfg.kids { users.users.eli = mkIf cfg.kids {

View File

@@ -14,7 +14,5 @@ in
{ {
virtualisation.libvirtd.enable = true; virtualisation.libvirtd.enable = true;
programs.virt-manager.enable = true; programs.virt-manager.enable = true;
virtualisation.docker.enable = true;
users.extraGroups.docker.members = [ "johno" ];
}; };
} }