diff --git a/flake.nix b/flake.nix index ec4a597..1d7307b 100644 --- a/flake.nix +++ b/flake.nix @@ -1,6 +1,5 @@ { - description = - "Flake to define configurations of 'elss' - ellmauthaler stefan's systems"; + description = "Flake to define configurations of 'elss' - ellmauthaler stefan's systems"; inputs = { nixpkgs.url = "github:NixOS/nixpkgs/nixos-23.05"; @@ -12,14 +11,14 @@ # inputs.nixpkgs.follows = "nixpkgs"; #}; - nixos-hardware = { url = "github:NixOS/nixos-hardware/master"; }; + nixos-hardware = {url = "github:NixOS/nixos-hardware/master";}; home-manager = { url = "github:nix-community/home-manager/release-23.05"; inputs.nixpkgs.follows = "nixpkgs"; }; - flake-utils-plus = { url = "github:gytis-ivaskevicius/flake-utils-plus"; }; + flake-utils-plus = {url = "github:gytis-ivaskevicius/flake-utils-plus";}; emacs-overlay = { url = "github:nix-community/emacs-overlay"; @@ -53,16 +52,27 @@ }; }; - outputs = { self, nixpkgs, flake-utils-plus, ... }@inputs: - let - extended-lib = nixpkgs.lib.extend - (final: prev: { elss = (import ./lib { lib = final; }) prev; }); - inherit (extended-lib.elss) - discoverModules moduleNames discoverMachines withModules - discoverTemplates; - in flake-utils-plus.lib.mkFlake rec { + outputs = { + self, + nixpkgs, + flake-utils-plus, + ... + } @ inputs: let + extended-lib = + nixpkgs.lib.extend + (final: prev: {elss = (import ./lib {lib = final;}) prev;}); + inherit + (extended-lib.elss) + discoverModules + moduleNames + discoverMachines + withModules + discoverTemplates + ; + in + flake-utils-plus.lib.mkFlake rec { inherit self inputs; - supportedSystems = [ "x86_64-linux" ]; + supportedSystems = ["x86_64-linux"]; lib = extended-lib; @@ -82,7 +92,7 @@ }; channels.nixpkgs.overlaysBuilder = channels: [ - (final: prev: { unstable = channels.nixpkgs-unstable; }) + (final: prev: {unstable = channels.nixpkgs-unstable;}) (flake-utils-plus.lib.genPkgOverlay inputs.comma "comma") #inputs.nix.overlay inputs.emacs-overlay.overlay @@ -91,32 +101,38 @@ hostDefaults = { system = "x86_64-linux"; channelName = "nixpkgs"; - modules = [ - inputs.home-manager.nixosModules.home-manager - inputs.sops-nix.nixosModules.sops - inputs.dwarffs.nixosModules.dwarffs - inputs.simple-nixos-mailserver.nixosModules.mailserver - ./common/wireguard.nix - ] ++ (map (name: ./modules + "/${name}") (moduleNames ./modules)); + modules = + [ + inputs.home-manager.nixosModules.home-manager + inputs.sops-nix.nixosModules.sops + inputs.dwarffs.nixosModules.dwarffs + inputs.simple-nixos-mailserver.nixosModules.mailserver + ./common/wireguard.nix + ] + ++ (map (name: ./modules + "/${name}") (moduleNames ./modules)); specialArgs = { nixos-hardware = inputs.nixos-hardware.nixosModules; inherit inputs; }; extraArgs = { - homeConfigurations = withModules ./users ({ name, path, }: + homeConfigurations = withModules ./users ({ + name, + path, + }: #import (./users + "/${name}") - import path); + import path); }; }; hosts = - discoverMachines ./machines { specialArgs = { lib = extended-lib; }; }; + discoverMachines ./machines {specialArgs = {lib = extended-lib;};}; nixosModules = discoverModules ./modules; - homeConfigurations = withModules ./users (name: - let username = extended-lib.removeSuffix ".nix" name; - in inputs.home-manager.lib.homeManagerConfiguration { + homeConfigurations = withModules ./users (name: let + username = extended-lib.removeSuffix ".nix" name; + in + inputs.home-manager.lib.homeManagerConfiguration { configuration = import (./users + "/${name}"); inherit username; system = "x86_64-linux"; @@ -125,7 +141,8 @@ }); outputsBuilder = channels: { - devShells = let pkgs = channels.nixpkgs; + devShells = let + pkgs = channels.nixpkgs; in rec { sops = import ./secrets/shell.nix { pkgs = channels.nixpkgs; @@ -164,14 +181,12 @@ templates = discoverTemplates ./templates { base = { description = "Basic setup of tools in nixpkgs/unstable"; - welcomeText = - "Change into the folder and add the wanted packages to the buildInputs"; + welcomeText = "Change into the folder and add the wanted packages to the buildInputs"; }; rust = { description = "Rust development environment flake"; - welcomeText = - "Change into the folder and follow the prompt to create an automatic rust environment in this folder"; + welcomeText = "Change into the folder and follow the prompt to create an automatic rust environment in this folder"; }; jupyter = { description = "Jupyter server flake"; diff --git a/machines/nucturne/hardware-configuration.nix b/machines/nucturne/hardware-configuration.nix index 2d37c5b..0128151 100644 --- a/machines/nucturne/hardware-configuration.nix +++ b/machines/nucturne/hardware-configuration.nix @@ -1,14 +1,19 @@ # 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") ]; +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [(modulesPath + "/installer/scan/not-detected.nix")]; - boot.initrd.availableKernelModules = - [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_pci" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" "sdhci_pci"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/da267a3c-34e3-4218-933f-10738ee61eb6"; @@ -25,8 +30,7 @@ fsType = "vfat"; }; - swapDevices = - [{ device = "/dev/disk/by-uuid/0069f1fa-dd8e-4c0a-8f01-a576af29909e"; }]; + swapDevices = [{device = "/dev/disk/by-uuid/0069f1fa-dd8e-4c0a-8f01-a576af29909e";}]; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; } diff --git a/machines/stel-xps/hardware-configuration.nix b/machines/stel-xps/hardware-configuration.nix index 689ef3d..7da35e9 100644 --- a/machines/stel-xps/hardware-configuration.nix +++ b/machines/stel-xps/hardware-configuration.nix @@ -1,30 +1,33 @@ # 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") ]; +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { + imports = [(modulesPath + "/installer/scan/not-detected.nix")]; - boot.initrd.availableKernelModules = - [ "xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; - boot.initrd.kernelModules = [ ]; - boot.kernelModules = [ "kvm-intel" ]; - boot.extraModulePackages = [ ]; + boot.initrd.availableKernelModules = ["xhci_pci" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc"]; + boot.initrd.kernelModules = []; + boot.kernelModules = ["kvm-intel"]; + boot.extraModulePackages = []; fileSystems."/" = { device = "/dev/disk/by-uuid/6b7f9f80-af34-4317-b017-f883a2316674"; fsType = "ext4"; }; - boot.initrd.luks.devices."crypted".device = - "/dev/disk/by-uuid/9c84f143-023d-4fcb-a49c-ca78ce69e0e0"; + boot.initrd.luks.devices."crypted".device = "/dev/disk/by-uuid/9c84f143-023d-4fcb-a49c-ca78ce69e0e0"; fileSystems."/boot" = { device = "/dev/disk/by-uuid/39E0-047B"; fsType = "vfat"; }; - swapDevices = - [{ device = "/dev/disk/by-uuid/93381a25-6704-408e-b091-cfda6cddbda0"; }]; + swapDevices = [{device = "/dev/disk/by-uuid/93381a25-6704-408e-b091-cfda6cddbda0";}]; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; } diff --git a/modules/server/gitea.nix b/modules/server/gitea.nix index 6f32f56..5180774 100644 --- a/modules/server/gitea.nix +++ b/modules/server/gitea.nix @@ -1,29 +1,36 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; { - config = let cfg = config.elss.server.gitea; - in mkIf cfg.enable { - services.nginx.virtualHosts."git.ellmauthaler.net" = { - enableACME = true; - forceSSL = true; - locations."/" = { proxyPass = "http://localhost:3001"; }; - }; - - services.gitea = { - enable = true; - settings.service = { DISABLE_REGISTRATION = true; }; - appName = "gitea: ellmauthaler.net gitea service"; - database = { - type = "postgres"; - host = "/run/posgresql"; + config = let + cfg = config.elss.server.gitea; + in + mkIf cfg.enable { + services.nginx.virtualHosts."git.ellmauthaler.net" = { + enableACME = true; + forceSSL = true; + locations."/" = {proxyPass = "http://localhost:3001";}; }; - settings = { - repository = { DEFAULT_BRANCH = "main"; }; - server = { - ROOT_URL = "https://git.ellmauthaler.net"; - HTTP_PORT = 3001; - DOMAIN = "git.ellmauthaler.net"; + + services.gitea = { + enable = true; + settings.service = {DISABLE_REGISTRATION = true;}; + appName = "gitea: ellmauthaler.net gitea service"; + database = { + type = "postgres"; + host = "/run/posgresql"; + }; + settings = { + repository = {DEFAULT_BRANCH = "main";}; + server = { + ROOT_URL = "https://git.ellmauthaler.net"; + HTTP_PORT = 3001; + DOMAIN = "git.ellmauthaler.net"; + }; }; }; }; - }; } diff --git a/modules/server/nextcloud.nix b/modules/server/nextcloud.nix index 1cd4af8..9d42ff7 100644 --- a/modules/server/nextcloud.nix +++ b/modules/server/nextcloud.nix @@ -1,40 +1,47 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; { - config = let cfg = config.elss.server.nextcloud; - in mkIf cfg.enable { - elss.server.sql.enable = mkDefault true; - services.nextcloud = { - enable = true; - package = pkgs.nextcloud26; - hostName = "cloudstore.ellmauthaler.net"; - https = true; - enableBrokenCiphersForSSE = false; - config = { - dbtype = "pgsql"; - dbuser = "nextcloud"; - dbname = "nextcloud"; - adminuser = "storemin"; - adminpassFile = config.sops.secrets.storemin.path; - dbhost = "/run/postgresql"; - defaultPhoneRegion = "DE"; + config = let + cfg = config.elss.server.nextcloud; + in + mkIf cfg.enable { + elss.server.sql.enable = mkDefault true; + services.nextcloud = { + enable = true; + package = pkgs.nextcloud26; + hostName = "cloudstore.ellmauthaler.net"; + https = true; + enableBrokenCiphersForSSE = false; + config = { + dbtype = "pgsql"; + dbuser = "nextcloud"; + dbname = "nextcloud"; + adminuser = "storemin"; + adminpassFile = config.sops.secrets.storemin.path; + dbhost = "/run/postgresql"; + defaultPhoneRegion = "DE"; + }; + }; + + services.nginx.virtualHosts."cloudstore.ellmauthaler.net" = { + enableACME = true; + forceSSL = true; + }; + + systemd.services."nextcloud-setup" = { + requires = ["postgresql.service"]; + after = ["postrgresql.service"]; + }; + sops.secrets = { + storemin = { + owner = "nextcloud"; + group = "nextcloud"; + sopsFile = ../../secrets/server.yaml; + }; }; }; - - services.nginx.virtualHosts."cloudstore.ellmauthaler.net" = { - enableACME = true; - forceSSL = true; - }; - - systemd.services."nextcloud-setup" = { - requires = [ "postgresql.service" ]; - after = [ "postrgresql.service" ]; - }; - sops.secrets = { - storemin = { - owner = "nextcloud"; - group = "nextcloud"; - sopsFile = ../../secrets/server.yaml; - }; - }; - }; } diff --git a/modules/ssh.nix b/modules/ssh.nix index 0ddf300..933cfa5 100644 --- a/modules/ssh.nix +++ b/modules/ssh.nix @@ -1,15 +1,22 @@ -{ config, lib, pkgs, ... }: +{ + config, + lib, + pkgs, + ... +}: with lib; { options.elss.sshd.enable = mkEnableOption "Set up sshd"; - config = let cfg = config.elss.sshd; - in mkIf cfg.enable { - services.openssh = { - enable = true; - settings = { - PasswordAuthentication = false; - PermitRootLogin = "no"; + config = let + cfg = config.elss.sshd; + in + mkIf cfg.enable { + services.openssh = { + enable = true; + settings = { + PasswordAuthentication = false; + PermitRootLogin = "no"; + }; }; }; - }; } diff --git a/modules/xmonad.nix b/modules/xmonad.nix index 5f3f78f..258161b 100644 --- a/modules/xmonad.nix +++ b/modules/xmonad.nix @@ -1,33 +1,40 @@ -{ config, pkgs, lib, ... }: +{ + config, + pkgs, + lib, + ... +}: with lib; { - config = let cfg = config.elss.graphical.xmonad; - in mkIf cfg.enable { - elss.graphical.xserver = { - enable = true; - autorandr.enable = true; - }; - elss.users.dunst.enable = true; - elss.graphical.xmonad.polybar.enable = true; - services = { - xserver = { - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - }; - displayManager.defaultSession = "none+xmonad"; - libinput = { - enable = true; - touchpad = { disableWhileTyping = true; }; - }; - }; - upower.enable = true; - - pipewire = { + config = let + cfg = config.elss.graphical.xmonad; + in + mkIf cfg.enable { + elss.graphical.xserver = { enable = true; - alsa.enable = true; - pulse.enable = true; + autorandr.enable = true; }; + elss.users.dunst.enable = true; + elss.graphical.xmonad.polybar.enable = true; + services = { + xserver = { + windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + }; + displayManager.defaultSession = "none+xmonad"; + libinput = { + enable = true; + touchpad = {disableWhileTyping = true;}; + }; + }; + upower.enable = true; + + pipewire = { + enable = true; + alsa.enable = true; + pulse.enable = true; + }; + }; + environment.systemPackages = with pkgs; [firefox thunderbird]; }; - environment.systemPackages = with pkgs; [ firefox thunderbird ]; - }; } diff --git a/secrets/shell.nix b/secrets/shell.nix index e1c6239..98a69d0 100644 --- a/secrets/shell.nix +++ b/secrets/shell.nix @@ -1,16 +1,20 @@ -{ pkgs ? import { }, sops-nix ? pkgs.callPackage { } -, name ? "secrets", ... }: -let +{ + pkgs ? import {}, + sops-nix ? pkgs.callPackage {}, + name ? "secrets", + ... +}: let sops-rekey = pkgs.writeShellScriptBin "sops-rekey" '' ${pkgs.findutils}/bin/find . -wholename '*/secrets/*.yaml' -exec ${pkgs.sops}/bin/sops updatekeys {} \; ''; -in pkgs.mkShell { - sopsPGPKeyDirs = [ ./keys/users ./keys/hosts ]; - name = name; - nativeBuildInputs = [ - sops-nix.sops-import-keys-hook - sops-nix.ssh-to-pgp - sops-rekey - pkgs.wireguard-tools - ]; -} +in + pkgs.mkShell { + sopsPGPKeyDirs = [./keys/users ./keys/hosts]; + name = name; + nativeBuildInputs = [ + sops-nix.sops-import-keys-hook + sops-nix.ssh-to-pgp + sops-rekey + pkgs.wireguard-tools + ]; + } diff --git a/templates/base/flake.nix b/templates/base/flake.nix index 04f6283..17c296d 100644 --- a/templates/base/flake.nix +++ b/templates/base/flake.nix @@ -8,18 +8,24 @@ flake-utils-plus.url = "github:gytis-ivaskevicius/flake-utils-plus"; }; - outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, flake-utils-plus - , ... }@inputs: - { } // (flake-utils.lib.eachDefaultSystem (system: - let - unstable = import nixpkgs-unstable { inherit system; }; - pkgs = import nixpkgs { inherit system; }; - in rec { - devShell = pkgs.mkShell { - buildInputs = [ - # add packages here, like - # pkgs.clingo - ]; - }; - })); + outputs = { + self, + nixpkgs, + nixpkgs-unstable, + flake-utils, + flake-utils-plus, + ... + } @ inputs: + {} + // (flake-utils.lib.eachDefaultSystem (system: let + unstable = import nixpkgs-unstable {inherit system;}; + pkgs = import nixpkgs {inherit system;}; + in rec { + devShell = pkgs.mkShell { + buildInputs = [ + # add packages here, like + # pkgs.clingo + ]; + }; + })); } diff --git a/templates/rust/flake.nix b/templates/rust/flake.nix index d96fa30..1655a27 100644 --- a/templates/rust/flake.nix +++ b/templates/rust/flake.nix @@ -18,33 +18,40 @@ }; }; - outputs = { self, nixpkgs, nixpkgs-unstable, flake-utils, gitignoresrc - , rust-overlay, ... }@inputs: + outputs = { + self, + nixpkgs, + nixpkgs-unstable, + flake-utils, + gitignoresrc, + rust-overlay, + ... + } @ inputs: { #overlay = import ./nix { inherit gitignoresrc; }; - } // (flake-utils.lib.eachDefaultSystem (system: - let - unstable = import nixpkgs-unstable { inherit system; }; - pkgs = import nixpkgs { - inherit system; - overlays = [ (import rust-overlay) ]; - }; - in rec { - devShell = pkgs.mkShell { - RUST_LOG = "debug"; - RUST_BACKTRACE = 1; - buildInputs = [ - pkgs.rust-bin.stable.latest.rustfmt - pkgs.rust-bin.stable.latest.default - pkgs.rust-analyzer - pkgs.cargo-audit - pkgs.cargo-license - pkgs.cargo-tarpaulin - pkgs.cargo-kcov - pkgs.valgrind - pkgs.gnuplot - pkgs.kcov - ]; - }; - })); + } + // (flake-utils.lib.eachDefaultSystem (system: let + unstable = import nixpkgs-unstable {inherit system;}; + pkgs = import nixpkgs { + inherit system; + overlays = [(import rust-overlay)]; + }; + in rec { + devShell = pkgs.mkShell { + RUST_LOG = "debug"; + RUST_BACKTRACE = 1; + buildInputs = [ + pkgs.rust-bin.stable.latest.rustfmt + pkgs.rust-bin.stable.latest.default + pkgs.rust-analyzer + pkgs.cargo-audit + pkgs.cargo-license + pkgs.cargo-tarpaulin + pkgs.cargo-kcov + pkgs.valgrind + pkgs.gnuplot + pkgs.kcov + ]; + }; + })); } diff --git a/users/ellmau/autorandr.nix b/users/ellmau/autorandr.nix index 758224d..efe7957 100644 --- a/users/ellmau/autorandr.nix +++ b/users/ellmau/autorandr.nix @@ -1,134 +1,132 @@ -{ config, pkgs, lib, nixosConfig, ... }: +{ + config, + pkgs, + lib, + nixosConfig, + ... +}: with lib; { - config = let cfg = nixosConfig.elss.graphical.xserver.autorandr; - in mkIf cfg.enable { - #services.autorandr = { enable = true; }; - programs.autorandr = { - enable = true; - profiles = { - "home" = { - fingerprint = { - DP-1 = - "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; - eDP-1 = - "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; - }; - config = { - eDP-1.enable = false; - DP-1 = { - enable = true; - crtc = 1; - primary = true; - position = "0x0"; - mode = "3840x2160"; - dpi = 96; + config = let + cfg = nixosConfig.elss.graphical.xserver.autorandr; + in + mkIf cfg.enable { + #services.autorandr = { enable = true; }; + programs.autorandr = { + enable = true; + profiles = { + "home" = { + fingerprint = { + DP-1 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; + eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; + }; + config = { + eDP-1.enable = false; + DP-1 = { + enable = true; + crtc = 1; + primary = true; + position = "0x0"; + mode = "3840x2160"; + dpi = 96; + }; }; }; - }; - "mobile" = { - fingerprint.eDP-1 = - "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; - config = { - eDP-1 = { - enable = true; - primary = true; - mode = "3840x2160"; - dpi = 192; + "mobile" = { + fingerprint.eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; + config = { + eDP-1 = { + enable = true; + primary = true; + mode = "3840x2160"; + dpi = 192; + }; }; }; - }; - "work" = { - fingerprint = { - eDP-1 = - "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; - DP-2 = - "00ffffffffffff0010acb5414c4133452c1e0104b53c22783eee95a3544c99260f5054a54b00e1c0d100d1c0b300a94081808100714f4dd000a0f0703e803020350055502100001a000000ff0031444e593132330a2020202020000000fd00184b1e8c36010a202020202020000000fc0044454c4c205532373230510a2001af020319f14c101f2005140413121103020123097f0783010000a36600a0f0703e803020350055502100001a565e00a0a0a029503020350055502100001a114400a0800025503020360055502100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9"; - }; - config = { - eDP-1 = { - enable = true; - crtc = 0; - position = "3840x0"; - mode = "3840x2160"; - #dpi = 288; - dpi = 96; + "work" = { + fingerprint = { + eDP-1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; + DP-2 = "00ffffffffffff0010acb5414c4133452c1e0104b53c22783eee95a3544c99260f5054a54b00e1c0d100d1c0b300a94081808100714f4dd000a0f0703e803020350055502100001a000000ff0031444e593132330a2020202020000000fd00184b1e8c36010a202020202020000000fc0044454c4c205532373230510a2001af020319f14c101f2005140413121103020123097f0783010000a36600a0f0703e803020350055502100001a565e00a0a0a029503020350055502100001a114400a0800025503020360055502100001a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000d9"; }; - DP-2 = { - enable = true; - primary = true; - mode = "3840x2160"; - #dpi = 144; - dpi = 96; - position = "0x0"; + config = { + eDP-1 = { + enable = true; + crtc = 0; + position = "3840x0"; + mode = "3840x2160"; + #dpi = 288; + dpi = 96; + }; + DP-2 = { + enable = true; + primary = true; + mode = "3840x2160"; + #dpi = 144; + dpi = 96; + position = "0x0"; + }; }; }; - }; - "home-nuc" = { - fingerprint = { - DP-2 = - "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; - }; - config = { - DP-2 = { - enable = true; - crtc = 1; - primary = true; - position = "0x0"; - mode = "3840x2160"; - dpi = 96; + "home-nuc" = { + fingerprint = { + DP-2 = "00ffffffffffff0009d1507945540000221e0104b54627783f5995af4f42af260f5054a56b80d1c0b300a9c08180810081c0010101014dd000a0f0703e8030203500ba892100001a000000ff004e384c30323634373031390a20000000fd00283c87873c010a202020202020000000fc0042656e5120455733323730550a01bc02033af1515d5e5f6061101f222120051404131203012309070783010000e200c06d030c0020003878200060010203e305e001e6060501544c2ca36600a0f0701f8030203500ba892100001a565e00a0a0a029502f203500ba892100001abf650050a0402e6008200808ba892100001c000000000000000000000000000000bf"; + }; + config = { + DP-2 = { + enable = true; + crtc = 1; + primary = true; + position = "0x0"; + mode = "3840x2160"; + dpi = 96; + }; }; }; - }; - "e3027" = { - fingerprint = { - e-DP1 = - "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; - DP-1 = - "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089"; - }; - config = { - eDP-1 = { - enable = true; - crtc = 0; - position = "0x0"; - mode = "3840x2160"; + "e3027" = { + fingerprint = { + e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; + DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089"; }; - DP-1 = { - enable = true; - crtc = 1; - position = "3840x0"; - mode = "1920x1200"; + config = { + eDP-1 = { + enable = true; + crtc = 0; + position = "0x0"; + mode = "3840x2160"; + }; + DP-1 = { + enable = true; + crtc = 1; + position = "3840x0"; + mode = "1920x1200"; + }; }; }; - }; - "e3027-clone" = { - fingerprint = { - e-DP1 = - "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; - DP-1 = - "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089"; - }; - config = { - eDP-1 = { - enable = true; - crtc = 0; - position = "0x0"; - mode = "1920x1200"; + "e3027-clone" = { + fingerprint = { + e-DP1 = "00ffffffffffff0006af2b2800000000001c0104a51d117802ee95a3544c99260f50540000000101010101010101010101010101010152d000a0f0703e803020350025a51000001a000000000000000000000000000000000000000000fe0039304e544880423133335a414e0000000000024103a8011100000b010a20200006"; + DP-1 = "00ffffffffffff004ca306a7010101011715010380a05a780ade50a3544c99260f5054a10800814081c0950081809040b300a9400101283c80a070b023403020360040846300001a9e20009051201f304880360040846300001c000000fd0017550f5c11000a202020202020000000fc004550534f4e20504a0a202020200116020328f651901f202205140413030212110706161501230907078301000066030c00100080e200fd023a801871382d40582c450040846300001e011d801871382d40582c450040846300001e662156aa51001e30468f330040846300001e302a40c8608464301850130040846300001e00000000000000000000000000000089"; }; - DP-1 = { - enable = true; - crtc = 1; - position = "0x0"; - mode = "1920x1200"; + config = { + eDP-1 = { + enable = true; + crtc = 0; + position = "0x0"; + mode = "1920x1200"; + }; + DP-1 = { + enable = true; + crtc = 1; + position = "0x0"; + mode = "1920x1200"; + }; }; }; }; - }; - hooks.postswitch = { - "polybar" = "systemctl --user restart polybar.service"; + hooks.postswitch = { + "polybar" = "systemctl --user restart polybar.service"; + }; }; }; - }; } diff --git a/users/ellmau/dunst.nix b/users/ellmau/dunst.nix index 4fcfae9..5b9d251 100644 --- a/users/ellmau/dunst.nix +++ b/users/ellmau/dunst.nix @@ -1,40 +1,48 @@ -{ config, pkgs, lib, nixosConfig, ... }: +{ + config, + pkgs, + lib, + nixosConfig, + ... +}: with lib; { - config = let cfg = nixosConfig.elss.users.dunst; - in mkIf cfg.enable { - services.dunst = { - iconTheme = { - package = pkgs.numix-icon-theme; - name = "Numix"; - size = "26"; - }; - settings = { - global = { - geometry = "800x5-30+50"; - transparency = 10; - frame_color = "#839496"; - font = "Hasklug Nerd Font 11"; - timeout = 5; - follow = "mouse"; - markup = "full"; - icon_position = "left"; - history_length = 32; - dmenu = "${pkgs.rofi}/bin/rofi -dmenu"; - word_wrap = true; + config = let + cfg = nixosConfig.elss.users.dunst; + in + mkIf cfg.enable { + services.dunst = { + iconTheme = { + package = pkgs.numix-icon-theme; + name = "Numix"; + size = "26"; }; - urgency_critical = { - foreground = "#fdf6e3"; - background = "#dc322f"; - }; - urgency_normal = { - foreground = "#fdf6e3"; - background = "#859900"; - }; - urgency_low = { - foreground = "#fdf6e3"; - background = "#2aa198"; + settings = { + global = { + geometry = "800x5-30+50"; + transparency = 10; + frame_color = "#839496"; + font = "Hasklug Nerd Font 11"; + timeout = 5; + follow = "mouse"; + markup = "full"; + icon_position = "left"; + history_length = 32; + dmenu = "${pkgs.rofi}/bin/rofi -dmenu"; + word_wrap = true; + }; + urgency_critical = { + foreground = "#fdf6e3"; + background = "#dc322f"; + }; + urgency_normal = { + foreground = "#fdf6e3"; + background = "#859900"; + }; + urgency_low = { + foreground = "#fdf6e3"; + background = "#2aa198"; + }; }; }; }; - }; } diff --git a/users/ellmau/polybar_xmonad.nix b/users/ellmau/polybar_xmonad.nix index 75b91ff..7bf6c3e 100644 --- a/users/ellmau/polybar_xmonad.nix +++ b/users/ellmau/polybar_xmonad.nix @@ -1,132 +1,138 @@ -{ config, pkgs, lib, nixosConfig, ... }: +{ + config, + pkgs, + lib, + nixosConfig, + ... +}: with lib; { - config = let cfg = nixosConfig.elss.graphical.xmonad.polybar; - in mkIf cfg.enable { - services.polybar = { - enable = true; - package = pkgs.polybarFull; - settings = let - fonts = [ - "Weather Icons:size=12;0" - "Hasklug Nerd Font,Hasklig Medium:style=Medium,Regular" - "all-the-icons:style=Regular" - "Webdings:style=Regular" - "Noto Emoji:scale=10" - "Unifont:style=Regular" - "Material Icons:size=12;0" - ]; - in { - "bar/main" = { - font = fonts; - modules = { - left = "xmonad"; - center = ""; - # right = "xbacklight xkeyboard eth wlan battery date powermenu dunst volume "; - right = "xkeyboard dunst battery date volume"; - }; - tray = { - position = "right"; - padding = 3; + config = let + cfg = nixosConfig.elss.graphical.xmonad.polybar; + in + mkIf cfg.enable { + services.polybar = { + enable = true; + package = pkgs.polybarFull; + settings = let + fonts = [ + "Weather Icons:size=12;0" + "Hasklug Nerd Font,Hasklig Medium:style=Medium,Regular" + "all-the-icons:style=Regular" + "Webdings:style=Regular" + "Noto Emoji:scale=10" + "Unifont:style=Regular" + "Material Icons:size=12;0" + ]; + in { + "bar/main" = { + font = fonts; + modules = { + left = "xmonad"; + center = ""; + # right = "xbacklight xkeyboard eth wlan battery date powermenu dunst volume "; + right = "xkeyboard dunst battery date volume"; + }; + tray = { + position = "right"; + padding = 3; + }; + + # background = "FFFFFF"; + # foreground = "000000"; + + module-margin = 2; + + monitor = '' + ''${env:MONITOR:} + ''; }; - # background = "FFFFFF"; - # foreground = "000000"; - - module-margin = 2; - - monitor = '' - ''${env:MONITOR:} - ''; - }; - - "bar/aux" = { - font = fonts; - modules = { - left = "xmonad"; - center = ""; - right = ""; + "bar/aux" = { + font = fonts; + modules = { + left = "xmonad"; + center = ""; + right = ""; + }; + monitor = '' + ''${env:MONITOR:} + ''; + }; + + "module/xmonad" = { + type = "custom/script"; + exec = "${pkgs.xmonad-log}/bin/xmonad-log"; + tail = true; + }; + + "module/dunst" = { + type = "custom/script"; + exec = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl is-paused | ${pkgs.gnugrep}/bin/grep -q true && echo  || echo  "; + interval = 10; + click-left = "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl set-paused toggle"; + }; + + "module/volume" = { + type = "internal/pulseaudio"; + format.volume = " "; + label.muted.text = "🔇"; + label.muted.foreground = "#666"; + ramp.volume = ["🔈" "🔉" "🔊"]; + click.right = "${pkgs.pavucontrol}/bin/pavucontrol &"; + # format-volume-underline = Base2; + # format-muted-underline = Base2; + }; + + "module/xkeyboard" = { + type = "internal/xkeyboard"; + blacklist-0 = "num lock"; + interval = "5"; + format-prefix = ''""''; + label-layout = "%layout%"; + label-indicator-padding = "2"; + label-indicator-margin = "1"; + }; + + "module/battery" = { + type = "internal/battery"; + battery = "BAT0"; + adapter = "ADP1"; + full-at = "98"; + format-charging-prefix = ''" "''; + format-charging = ""; + format-discharging-prefix = ''" "''; + format-discharging = ""; + format-full-prefix = ''" "''; + format-full-padding = "1"; + format-charging-padding = "1"; + format-discharging-padding = "1"; + }; + + "module/date" = { + type = "internal/date"; + interval = "5"; + + date = ''" %Y-%m-%d"''; + date-alt = ''" %Y-%m-%d"''; + + time = "%H:%M"; + time-alt = "%H:%M:%S"; + + label = "%{A} %date% %time%"; }; - monitor = '' - ''${env:MONITOR:} - ''; - }; - - "module/xmonad" = { - type = "custom/script"; - exec = "${pkgs.xmonad-log}/bin/xmonad-log"; - tail = true; - }; - - "module/dunst" = { - type = "custom/script"; - exec = - "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl is-paused | ${pkgs.gnugrep}/bin/grep -q true && echo  || echo  "; - interval = 10; - click-left = - "PATH=${pkgs.dbus}/bin/:$PATH ${pkgs.dunst}/bin/dunstctl set-paused toggle"; - }; - - "module/volume" = { - type = "internal/pulseaudio"; - format.volume = " "; - label.muted.text = "🔇"; - label.muted.foreground = "#666"; - ramp.volume = [ "🔈" "🔉" "🔊" ]; - click.right = "${pkgs.pavucontrol}/bin/pavucontrol &"; - # format-volume-underline = Base2; - # format-muted-underline = Base2; - }; - - "module/xkeyboard" = { - type = "internal/xkeyboard"; - blacklist-0 = "num lock"; - interval = "5"; - format-prefix = ''""''; - label-layout = "%layout%"; - label-indicator-padding = "2"; - label-indicator-margin = "1"; - }; - - "module/battery" = { - type = "internal/battery"; - battery = "BAT0"; - adapter = "ADP1"; - full-at = "98"; - format-charging-prefix = ''" "''; - format-charging = ""; - format-discharging-prefix = ''" "''; - format-discharging = ""; - format-full-prefix = ''" "''; - format-full-padding = "1"; - format-charging-padding = "1"; - format-discharging-padding = "1"; - }; - - "module/date" = { - type = "internal/date"; - interval = "5"; - - date = ''" %Y-%m-%d"''; - date-alt = ''" %Y-%m-%d"''; - - time = "%H:%M"; - time-alt = "%H:%M:%S"; - - label = "%{A} %date% %time%"; }; + script = '' + for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do + MONITOR=$m polybar --reload main & + done; + for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep -v '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do + MONITOR=$m polybar --reload aux & + done; + ''; }; - script = '' - for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do - MONITOR=$m polybar --reload main & - done; - for m in $(polybar --list-monitors | ${pkgs.gnugrep}/bin/grep -v '(primary)' | ${pkgs.coreutils}/bin/cut -d":" -f1); do - MONITOR=$m polybar --reload aux & - done; - ''; - }; - systemd.user.services.polybar = { - Install.WantedBy = [ "graphical-session.target" ]; + systemd.user.services.polybar = { + Install.WantedBy = ["graphical-session.target"]; + }; }; - }; } diff --git a/users/ellmau/xmonad.nix b/users/ellmau/xmonad.nix index 32a6973..c5c0072 100644 --- a/users/ellmau/xmonad.nix +++ b/users/ellmau/xmonad.nix @@ -1,39 +1,46 @@ -{ config, pkgs, lib, nixosConfig, ... }: +{ + config, + pkgs, + lib, + nixosConfig, + ... +}: with lib; { - config = let cfg = nixosConfig.elss.graphical.xmonad; - in mkIf cfg.enable { - xsession = { - windowManager.xmonad = { - enable = true; - enableContribAndExtras = true; - extraPackages = hp: [ - hp.dbus - hp.hostname - hp.monad-logger - hp.xmonad-contrib - ]; - libFiles."ELSS.hs" = pkgs.writeText "ELSS.hs" '' - module ELSS where - keyboardtoggle = "${conf/keyboard/keyboard_layout_toggle.sh}" - ''; - config = conf/xmonad/xmonad.hs; + config = let + cfg = nixosConfig.elss.graphical.xmonad; + in + mkIf cfg.enable { + xsession = { + windowManager.xmonad = { + enable = true; + enableContribAndExtras = true; + extraPackages = hp: [ + hp.dbus + hp.hostname + hp.monad-logger + hp.xmonad-contrib + ]; + libFiles."ELSS.hs" = pkgs.writeText "ELSS.hs" '' + module ELSS where + keyboardtoggle = "${conf/keyboard/keyboard_layout_toggle.sh}" + ''; + config = conf/xmonad/xmonad.hs; + }; }; + services = { + betterlockscreen = { + enable = true; + inactiveInterval = 10; + }; + picom = { + enable = true; + backend = "glx"; + }; + }; + + gtk.enable = true; + + home.packages = with pkgs; [rofi polybarFull firefox pulseaudioFull]; }; - - services = { - betterlockscreen = { - enable = true; - inactiveInterval = 10; - }; - picom = { - enable = true; - backend = "glx"; - }; - }; - - gtk.enable = true; - - home.packages = with pkgs; [ rofi polybarFull firefox pulseaudioFull ]; - }; }