diff --git a/flake.nix b/flake.nix index d3629689..26550af0 100644 --- a/flake.nix +++ b/flake.nix @@ -2,8 +2,8 @@ description = "Evie's machine configurations"; nixConfig = { - extra-substituters = ["https://nix.xenia.me.uk"]; - extra-trusted-public-keys = ["nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI="]; + extra-substituters = [ "https://nix.xenia.me.uk" ]; + extra-trusted-public-keys = [ "nix.xenia.me.uk:tlgwOaG5KMLjQUk2YaErS8mAG69ZCr3PaHXZYi+Y5eI=" ]; }; inputs = { @@ -27,158 +27,194 @@ }; }; - outputs = { - nixpkgs, - home-manager, - plasma-manager, - iosevka-custom, - base16, - tt-schemes, - ... - } @ inputs: let - defaultSpecialArgs = {system ? "x86_64-linux", ...}: { - inherit inputs; - iosevkaCustom = { - packages = iosevka-custom.outputs.packages.${system}; - names = iosevka-custom.outputs.names; - }; - }; - defaultExtraSpecialArgs = {system}: let - iosevkaCustom = { - packages = iosevka-custom.outputs.packages.${system}; - names = iosevka-custom.outputs.names; - }; - in { - inherit inputs iosevkaCustom; - inherit (plasma-manager.packages.${system}) rc2nix; - accentColourName = "base0E"; - fonts = with iosevkaCustom; rec { - sizes = { - applications = 12; - desktop = 10; - popups = 14; - terminal = 12; - }; - serif = sansSerif; - sansSerif = { - name = names.iosevka-custom-aile; - package = packages.iosevka-custom-aile; - }; - monospace = { - name = names.iosevka-custom-nerdfont; - package = packages.iosevka-custom-nerdfont; - }; - }; - }; - defaultModules = { - system ? "x86_64-linux", - username ? "pixelifytica", - hostName ? "Atlas", - loginShell ? "bash", + outputs = + { + nixpkgs, + home-manager, + plasma-manager, + iosevka-custom, + base16, + tt-schemes, ... - }: [ - home-manager.nixosModules.home-manager - ./system/default.nix - ./system/${hostName}.nix - ./system/hardware-configuration/${hostName}.nix - ({ - config, - lib, - pkgs, - ... - }: { - networking = {inherit hostName;}; - nix.settings.trusted-users = [username]; - services.greetd.settings.initial_session.user = username; - programs.${loginShell} = lib.mkIf (loginShell != "bash") {enable = true;}; - users.users.${username} = { - shell = pkgs.${loginShell}; - group = "users"; - isNormalUser = true; - description = "Evie Litherland-Smith"; - extraGroups = ["networkmanager" "wheel" "video" "input" "uinput" "dialout"]; - initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3"; - openssh = {inherit (config.users.users.root.openssh) authorizedKeys;}; - }; - home-manager = { - extraSpecialArgs = defaultExtraSpecialArgs {inherit system;}; - useGlobalPkgs = true; - useUserPackages = true; - backupFileExtension = "backup"; - users.${username} = { - imports = [ - base16.homeManagerModule - {scheme = "${tt-schemes}/base16/one-light.yaml";} - ./home/${hostName}.nix - ]; - home = { - inherit username; - homeDirectory = "/home/${username}"; - stateVersion = "23.05"; - }; - programs.home-manager.enable = true; - nixpkgs.config.allowUnfree = true; + }@inputs: + let + defaultSpecialArgs = + { + system ? "x86_64-linux", + ... + }: + { + inherit inputs; + iosevkaCustom = { + packages = iosevka-custom.outputs.packages.${system}; + names = iosevka-custom.outputs.names; }; }; - }) - ]; - in { - devShells.x86_64-linux.default = let - pkgs = import nixpkgs {system = "x86_64-linux";}; + defaultExtraSpecialArgs = + { system }: + let + iosevkaCustom = { + packages = iosevka-custom.outputs.packages.${system}; + names = iosevka-custom.outputs.names; + }; + in + { + inherit inputs iosevkaCustom; + inherit (plasma-manager.packages.${system}) rc2nix; + accentColourName = "base0E"; + fonts = with iosevkaCustom; rec { + sizes = { + applications = 12; + desktop = 10; + popups = 14; + terminal = 12; + }; + serif = sansSerif; + sansSerif = { + name = names.iosevka-custom-aile; + package = packages.iosevka-custom-aile; + }; + monospace = { + name = names.iosevka-custom-nerdfont; + package = packages.iosevka-custom-nerdfont; + }; + }; + }; + defaultModules = + { + system ? "x86_64-linux", + username ? "pixelifytica", + hostName ? "Atlas", + loginShell ? "bash", + ... + }: + [ + home-manager.nixosModules.home-manager + ./system/default.nix + ./system/${hostName}.nix + ./system/hardware-configuration/${hostName}.nix + ( + { + config, + lib, + pkgs, + ... + }: + { + networking = { + inherit hostName; + }; + nix.settings.trusted-users = [ username ]; + services.greetd.settings.initial_session.user = username; + programs.${loginShell} = lib.mkIf (loginShell != "bash") { enable = true; }; + users.users.${username} = { + shell = pkgs.${loginShell}; + group = "users"; + isNormalUser = true; + description = "Evie Litherland-Smith"; + extraGroups = [ + "networkmanager" + "wheel" + "video" + "input" + "uinput" + "dialout" + ]; + initialHashedPassword = "$y$j9T$tHIPQt09Kf3KH2eIRze3g/$2mwSlcq27DTGvHNPJ5EP9/1CfL3bXP0F6oS/Vuffmn3"; + openssh = { + inherit (config.users.users.root.openssh) authorizedKeys; + }; + }; + home-manager = { + extraSpecialArgs = defaultExtraSpecialArgs { inherit system; }; + useGlobalPkgs = true; + useUserPackages = true; + backupFileExtension = "backup"; + users.${username} = { + imports = [ + base16.homeManagerModule + { scheme = "${tt-schemes}/base16/one-light.yaml"; } + ./home/${hostName}.nix + ]; + home = { + inherit username; + homeDirectory = "/home/${username}"; + stateVersion = "23.05"; + }; + programs.home-manager.enable = true; + nixpkgs.config.allowUnfree = true; + }; + }; + } + ) + ]; in - pkgs.mkShellNoCC { - packages = with pkgs; [nil pre-commit]; - shellHook = "pre-commit install --install-hooks"; + { + devShells.x86_64-linux.default = + let + pkgs = import nixpkgs { system = "x86_64-linux"; }; + in + pkgs.mkShellNoCC { + packages = with pkgs; [ + nil + pre-commit + ]; + shellHook = "pre-commit install --install-hooks"; + }; + nixosConfigurations = { + ## Server + Legion = + let + system = "x86_64-linux"; + username = "pixelifytica"; + hostName = "Legion"; + in + nixpkgs.lib.nixosSystem { + specialArgs = defaultSpecialArgs { inherit system; }; + modules = defaultModules { inherit system username hostName; }; + }; + ## Personal + Northstar = + let + system = "x86_64-linux"; + username = "pixelifytica"; + hostName = "Northstar"; + in + nixpkgs.lib.nixosSystem { + specialArgs = defaultSpecialArgs { inherit system; }; + modules = defaultModules { inherit system username hostName; }; + }; + Vanguard = + let + system = "x86_64-linux"; + username = "pixelifytica"; + hostName = "Vanguard"; + in + nixpkgs.lib.nixosSystem { + specialArgs = defaultSpecialArgs { inherit system; }; + modules = defaultModules { inherit system username hostName; }; + }; + ## Work + Tone = + let + system = "x86_64-linux"; + username = "elitherl"; + hostName = "Tone"; + in + nixpkgs.lib.nixosSystem { + specialArgs = defaultSpecialArgs { inherit system; }; + modules = defaultModules { inherit system username hostName; }; + }; + Scorch = + let + system = "x86_64-linux"; + username = "elitherl"; + hostName = "Scorch"; + in + nixpkgs.lib.nixosSystem { + specialArgs = defaultSpecialArgs { inherit system; }; + modules = defaultModules { inherit system username hostName; }; + }; }; - nixosConfigurations = { - ## Server - Legion = let - system = "x86_64-linux"; - username = "pixelifytica"; - hostName = "Legion"; - in - nixpkgs.lib.nixosSystem { - specialArgs = defaultSpecialArgs {inherit system;}; - modules = defaultModules {inherit system username hostName;}; - }; - ## Personal - Northstar = let - system = "x86_64-linux"; - username = "pixelifytica"; - hostName = "Northstar"; - in - nixpkgs.lib.nixosSystem { - specialArgs = defaultSpecialArgs {inherit system;}; - modules = defaultModules {inherit system username hostName;}; - }; - Vanguard = let - system = "x86_64-linux"; - username = "pixelifytica"; - hostName = "Vanguard"; - in - nixpkgs.lib.nixosSystem { - specialArgs = defaultSpecialArgs {inherit system;}; - modules = defaultModules {inherit system username hostName;}; - }; - ## Work - Tone = let - system = "x86_64-linux"; - username = "elitherl"; - hostName = "Tone"; - in - nixpkgs.lib.nixosSystem { - specialArgs = defaultSpecialArgs {inherit system;}; - modules = defaultModules {inherit system username hostName;}; - }; - Scorch = let - system = "x86_64-linux"; - username = "elitherl"; - hostName = "Scorch"; - in - nixpkgs.lib.nixosSystem { - specialArgs = defaultSpecialArgs {inherit system;}; - modules = defaultModules {inherit system username hostName;}; - }; }; - }; } diff --git a/home/Legion.nix b/home/Legion.nix index 56cc3661..46c1ed21 100644 --- a/home/Legion.nix +++ b/home/Legion.nix @@ -1 +1,4 @@ -{...}: {imports = [./shell/default.nix];} +{ ... }: +{ + imports = [ ./shell/default.nix ]; +} diff --git a/home/Northstar.nix b/home/Northstar.nix index df7c4d4f..91aefac3 100644 --- a/home/Northstar.nix +++ b/home/Northstar.nix @@ -3,12 +3,13 @@ lib, pkgs, ... -}: { +}: +{ imports = [ ./personal.nix ./desktop/plasma/default.nix ]; - home.packages = with pkgs; [prusa-slicer]; + home.packages = with pkgs; [ prusa-slicer ]; programs.plasma = lib.mkIf config.programs.plasma.enable { configFile.kcminputrc."Libinput/1739/52759/SYNA32AA:00 06CB:CE17 Touchpad".NaturalScroll = true; }; diff --git a/home/Scorch.nix b/home/Scorch.nix index 02df3516..2bb3befe 100644 --- a/home/Scorch.nix +++ b/home/Scorch.nix @@ -1,8 +1,5 @@ +{ config, lib, ... }: { - config, - lib, - ... -}: { imports = [ ./work.nix ./desktop/plasma/default.nix diff --git a/home/Tone.nix b/home/Tone.nix index d5f962f2..f3cb0353 100644 --- a/home/Tone.nix +++ b/home/Tone.nix @@ -1,8 +1,5 @@ +{ config, lib, ... }: { - config, - lib, - ... -}: { imports = [ ./work.nix ./desktop/plasma/default.nix @@ -25,30 +22,35 @@ }; services.kanshi = lib.mkIf config.wayland.windowManager.sway.enable { enable = true; - settings = let - laptopScreen = { - criteria = "eDP-1"; - scale = 1.25; - position = "2560,576"; - }; - monitor = { - criteria = "Dell Inc. DELL P3223QE CCG8YN3"; - scale = 1.5; - position = "0,0"; - }; - in [ - { - profile = { - name = "undocked"; - outputs = [laptopScreen]; + settings = + let + laptopScreen = { + criteria = "eDP-1"; + scale = 1.25; + position = "2560,576"; }; - } - { - profile = { - name = "docked"; - outputs = [laptopScreen monitor]; + monitor = { + criteria = "Dell Inc. DELL P3223QE CCG8YN3"; + scale = 1.5; + position = "0,0"; }; - } - ]; + in + [ + { + profile = { + name = "undocked"; + outputs = [ laptopScreen ]; + }; + } + { + profile = { + name = "docked"; + outputs = [ + laptopScreen + monitor + ]; + }; + } + ]; }; } diff --git a/home/Vanguard.nix b/home/Vanguard.nix index 6f5d7cf7..63f19706 100644 --- a/home/Vanguard.nix +++ b/home/Vanguard.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ imports = [ ./personal.nix ./games/default.nix @@ -34,9 +35,7 @@ workspace = "1"; } ]; - startup = [ - {command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-1 --primary";} - ]; + startup = [ { command = "${pkgs.xorg.xrandr}/bin/xrandr --output DP-1 --primary"; } ]; }; }; } diff --git a/home/alacritty/default.nix b/home/alacritty/default.nix index 4c77a90c..32c572a1 100644 --- a/home/alacritty/default.nix +++ b/home/alacritty/default.nix @@ -1,8 +1,5 @@ +{ config, fonts, ... }: { - config, - fonts, - ... -}: { programs.alacritty = { enable = true; settings = { @@ -23,47 +20,54 @@ live_config_reload = true; selection.save_to_clipboard = true; mouse.hide_when_typing = true; - colors = let - mapColours = isBright: (builtins.listToAttrs (builtins.map (col: { - # Alacritty uses Yellow instead of Orange for BASE09 - name = - if col == "orange" - then "yellow" - else col; - value = "0x${config - .scheme - .${ - if isBright - then "bright-${col}" - else col - }}"; - }) - ["red" "orange" "green" "cyan" "blue" "magenta"])); - mapNamedColours = mapColours false; - mapNamedBrightColours = mapColours true; - in { - draw_bold_text_with_bright_colors = false; - primary = with config.scheme; { - background = "0x${base00}"; - foreground = "0x${base05}"; + colors = + let + mapColours = + isBright: + (builtins.listToAttrs ( + builtins.map + (col: { + # Alacritty uses Yellow instead of Orange for BASE09 + name = if col == "orange" then "yellow" else col; + value = "0x${config.scheme.${if isBright then "bright-${col}" else col}}"; + }) + [ + "red" + "orange" + "green" + "cyan" + "blue" + "magenta" + ] + )); + mapNamedColours = mapColours false; + mapNamedBrightColours = mapColours true; + in + { + draw_bold_text_with_bright_colors = false; + primary = with config.scheme; { + background = "0x${base00}"; + foreground = "0x${base05}"; + }; + cursor = with config.scheme; { + cursor = "0x${base05}"; + text = "0x${base00}"; + }; + normal = + with config.scheme; + { + black = "0x${base00-hex}"; + white = "0x${base05-hex}"; + } + // mapNamedColours; + bright = + with config.scheme; + { + black = "0x${base03-hex}"; + white = "0x${base07-hex}"; + } + // mapNamedBrightColours; }; - cursor = with config.scheme; { - cursor = "0x${base05}"; - text = "0x${base00}"; - }; - normal = with config.scheme; - { - black = "0x${base00-hex}"; - white = "0x${base05-hex}"; - } - // mapNamedColours; - bright = with config.scheme; - { - black = "0x${base03-hex}"; - white = "0x${base07-hex}"; - } - // mapNamedBrightColours; - }; }; }; } diff --git a/home/browser/default.nix b/home/browser/default.nix index ed78698e..94c61e63 100644 --- a/home/browser/default.nix +++ b/home/browser/default.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./nyxt.nix ./firefox.nix diff --git a/home/browser/firefox.nix b/home/browser/firefox.nix index 04b3b9f6..faa3d1f7 100644 --- a/home/browser/firefox.nix +++ b/home/browser/firefox.nix @@ -1,8 +1,9 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ programs = { browserpass = { enable = true; - browsers = ["firefox"]; + browsers = [ "firefox" ]; }; firefox = { enable = true; @@ -75,15 +76,21 @@ NoDefaultBookmarks = false; OfferToSaveLogins = false; PasswordManagerEnabled = false; - PDFjs = {Enabled = false;}; + PDFjs = { + Enabled = false; + }; Permissions = { Autoplay = { Default = "block-audio-video"; }; }; - PictureInPicture = {Enabled = true;}; - PopupBlocking = {Default = true;}; - RequestedLocales = ["en-GB"]; + PictureInPicture = { + Enabled = true; + }; + PopupBlocking = { + Default = true; + }; + RequestedLocales = [ "en-GB" ]; SearchBar = "unified"; ShowHomeButton = true; StartDownloadsInTempDirectory = true; @@ -131,37 +138,60 @@ default = "DuckDuckGo"; privateDefault = default; force = true; - order = ["DuckDuckGo" "Atlas SearXNG"]; + order = [ + "DuckDuckGo" + "Atlas SearXNG" + ]; engines = { "Atlas SearXNG" = { - urls = [{template = "https://search.atlas.engineer/searxng/search?q={searchTerms}";}]; - definedAliases = ["@atlas"]; + urls = [ { template = "https://search.atlas.engineer/searxng/search?q={searchTerms}"; } ]; + definedAliases = [ "@atlas" ]; }; "NixOS Wiki" = { - urls = [{template = "https://wiki.nixos.org/w/index.php?search={searchTerms}";}]; + urls = [ { template = "https://wiki.nixos.org/w/index.php?search={searchTerms}"; } ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["@nix" "@nixos" "@nixoswiki"]; + definedAliases = [ + "@nix" + "@nixos" + "@nixoswiki" + ]; }; "Arch Wiki" = { - urls = [{template = "https://wiki.archlinux.org/index.php?search={searchTerms}";}]; - definedAliases = ["@aw" "@arch" "@archwiki"]; + urls = [ { template = "https://wiki.archlinux.org/index.php?search={searchTerms}"; } ]; + definedAliases = [ + "@aw" + "@arch" + "@archwiki" + ]; }; "GitHub" = { - urls = [{template = "https://github.com/search?q={searchTerms}";}]; - definedAliases = ["@gh" "@git" "@github"]; + urls = [ { template = "https://github.com/search?q={searchTerms}"; } ]; + definedAliases = [ + "@gh" + "@git" + "@github" + ]; }; "FlatHub" = { - url = [{template = "https://flathub.org/apps/search?q={searchTerms}";}]; - definedAliases = ["@flat" "@fthub" "@flathub"]; + url = [ { template = "https://flathub.org/apps/search?q={searchTerms}"; } ]; + definedAliases = [ + "@flat" + "@fthub" + "@flathub" + ]; }; "NixOS Packages" = { - urls = [{template = "http://search.nixos.org/packages?channel=unstable&size=50&sort=relevance&type=packages&query={searchTerms}";}]; + urls = [ + { + template = "http://search.nixos.org/packages?channel=unstable&size=50&sort=relevance&type=packages&query={searchTerms}"; + } + ]; icon = "${pkgs.nixos-icons}/share/icons/hicolor/scalable/apps/nix-snowflake.svg"; - definedAliases = ["@nixpkgs"]; + definedAliases = [ "@nixpkgs" ]; }; "PyPI packages" = { - urls = [{template = "https://pypi.org/search/?q={searchTerms}";}]; - definedAliases = ["@pypi"]; + urls = [ { template = "https://pypi.org/search/?q={searchTerms}"; } ]; + definedAliases = [ "@pypi" ]; }; }; }; diff --git a/home/browser/librewolf.nix b/home/browser/librewolf.nix index fbd69da3..4c83fef7 100644 --- a/home/browser/librewolf.nix +++ b/home/browser/librewolf.nix @@ -1,9 +1,10 @@ -{...}: { +{ ... }: +{ programs = { - browserpass.browsers = ["librewolf"]; + browserpass.browsers = [ "librewolf" ]; librewolf = { enable = true; - settings = {}; + settings = { }; }; }; } diff --git a/home/browser/nyxt.nix b/home/browser/nyxt.nix index 0d441c09..c77e6f09 100644 --- a/home/browser/nyxt.nix +++ b/home/browser/nyxt.nix @@ -4,62 +4,69 @@ fonts, accentColourName, ... -}: { - home.packages = [pkgs.nyxt]; +}: +{ + home.packages = [ pkgs.nyxt ]; xdg = { configFile = { - "nyxt/config.lisp".text = let - sc = config.scheme.withHashtag; - in '' - ;; Import custom configuration - (nyxt::load-lisp "${./config.lisp}") - ;; Define custom theme - (define-configuration browser - ((theme (make-instance 'theme:theme - :dark-p t - :font-family "${fonts.sansSerif.name}" - :monospace-font-family "${fonts.monospace.name}" - :background-color "${sc.base00}" - :on-background-color "${sc.base05}" - :primary-color "${sc.base02}" - :on-primary-color "${sc.base05}" - :secondary-color "${sc.base03}" - :on-secondary-color "${sc.base05}" - :accent-color "${sc.${accentColourName}}" - :on-accent-color "${sc.base01}" - :action-color "${sc.cyan}" - :on-action-color "${sc.base01}" - :success-color "${sc.green}" - :on-success-color "${sc.base01}" - :highlight-color "${sc.magenta}" - :on-highlight-color "${sc.base01}" - :warning-color "${sc.yellow}" - :on-warning-color "${sc.base01}" - :codeblock-color "${sc.base02}" - :on-codeblock-color "${sc.base05}")))) - ''; + "nyxt/config.lisp".text = + let + sc = config.scheme.withHashtag; + in + '' + ;; Import custom configuration + (nyxt::load-lisp "${./config.lisp}") + ;; Define custom theme + (define-configuration browser + ((theme (make-instance 'theme:theme + :dark-p t + :font-family "${fonts.sansSerif.name}" + :monospace-font-family "${fonts.monospace.name}" + :background-color "${sc.base00}" + :on-background-color "${sc.base05}" + :primary-color "${sc.base02}" + :on-primary-color "${sc.base05}" + :secondary-color "${sc.base03}" + :on-secondary-color "${sc.base05}" + :accent-color "${sc.${accentColourName}}" + :on-accent-color "${sc.base01}" + :action-color "${sc.cyan}" + :on-action-color "${sc.base01}" + :success-color "${sc.green}" + :on-success-color "${sc.base01}" + :highlight-color "${sc.magenta}" + :on-highlight-color "${sc.base01}" + :warning-color "${sc.yellow}" + :on-warning-color "${sc.base01}" + :codeblock-color "${sc.base02}" + :on-codeblock-color "${sc.base05}")))) + ''; }; - dataFile."nyxt/bookmarks.lisp".text = let - # Make a string of lisp-style list of strings, from nix-style - # list - convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )"; - # Take bookmarks as returned from JSON file and convert to NYXT - # expected format - convertBookmark = { - name, - tags, - url, - }: "(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n"; - in ( - # Fold all entries in bookmarks.json into single string of NYXT - # format bookmarks, each entry on a new line and with 2 space - # indentation, just for visual clarity if reading the outputted - # file - "(\n" - + (builtins.foldl' - (x: y: x + " " + convertBookmark y) "" - (builtins.fromJSON (builtins.readFile ./bookmarks.json))) - + ")" - ); + dataFile."nyxt/bookmarks.lisp".text = + let + # Make a string of lisp-style list of strings, from nix-style + # list + convertTags = tags: "(" + (builtins.foldl' (x: y: x + " \"" + y + "\"") "" tags) + " )"; + # Take bookmarks as returned from JSON file and convert to NYXT + # expected format + convertBookmark = + { + name, + tags, + url, + }: + "(:url \"${url}\" :title \"${name}\" :tags ${convertTags tags})\n"; + in + ( + # Fold all entries in bookmarks.json into single string of NYXT + # format bookmarks, each entry on a new line and with 2 space + # indentation, just for visual clarity if reading the outputted + # file + "(\n" + + (builtins.foldl' (x: y: x + " " + convertBookmark y) "" ( + builtins.fromJSON (builtins.readFile ./bookmarks.json) + )) + + ")" + ); }; } diff --git a/home/default.nix b/home/default.nix index 56d4e0e9..ffb5f29c 100644 --- a/home/default.nix +++ b/home/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ # Programs ./desktop/default.nix @@ -28,7 +29,7 @@ followSystemTheme = true; notificationMethod = "electron"; optInTeamsV2 = true; - spellCheckerLanguages = ["en_GB"]; + spellCheckerLanguages = [ "en_GB" ]; }; }; } diff --git a/home/desktop/base16/gtk.nix b/home/desktop/base16/gtk.nix index 64cefaaa..fa882da7 100644 --- a/home/desktop/base16/gtk.nix +++ b/home/desktop/base16/gtk.nix @@ -1,8 +1,6 @@ -{ - scheme, - accentColourName, -}: -with scheme.withHashtag; '' +{ scheme, accentColourName }: +with scheme.withHashtag; +'' @define-color accent_color ${scheme.withHashtag."${accentColourName}-hex"}; @define-color accent_bg_color ${scheme.withHashtag."${accentColourName}-hex"}; @define-color accent_fg_color ${base00-hex}; diff --git a/home/desktop/default.nix b/home/desktop/default.nix index 09bca80c..fa149086 100644 --- a/home/desktop/default.nix +++ b/home/desktop/default.nix @@ -1,41 +1,39 @@ +{ config, pkgs, ... }: { - config, - pkgs, - ... -}: { home = { - pointerCursor = let - name = - if config.scheme.variant == "light" - then "volantes_cursors" - else "volantes_light_cursors"; - in { - inherit name; - package = pkgs.volantes-cursors; - size = 32; - gtk.enable = config.gtk.enable; - x11 = { - enable = true; - defaultCursor = name; + pointerCursor = + let + name = if config.scheme.variant == "light" then "volantes_cursors" else "volantes_light_cursors"; + in + { + inherit name; + package = pkgs.volantes-cursors; + size = 32; + gtk.enable = config.gtk.enable; + x11 = { + enable = true; + defaultCursor = name; + }; }; - }; }; services.syncthing.enable = true; programs.mpv.enable = true; xdg = { mime.enable = true; - mimeApps = let - defaultApplications = import ./mimeapps.nix; - in { - enable = true; - inherit defaultApplications; - associations = { - added = defaultApplications; - removed = { - "x-scheme-handler/zoomus" = config.xdg.mimeApps.defaultApplications."x-scheme-handler/http"; + mimeApps = + let + defaultApplications = import ./mimeapps.nix; + in + { + enable = true; + inherit defaultApplications; + associations = { + added = defaultApplications; + removed = { + "x-scheme-handler/zoomus" = config.xdg.mimeApps.defaultApplications."x-scheme-handler/http"; + }; }; }; - }; userDirs = { enable = true; createDirectories = true; diff --git a/home/desktop/lib/to_capital.nix b/home/desktop/lib/to_capital.nix index ef71b111..91620550 100644 --- a/home/desktop/lib/to_capital.nix +++ b/home/desktop/lib/to_capital.nix @@ -1,11 +1,13 @@ lib: string: -with lib; let - chars = let - lc = strings.splitString "" string; - in (lists.sublist 1 (lists.length lc - 2) lc); -in ( - strings.concatStringsSep "" ( - (lists.singleton (strings.toUpper (lists.elemAt chars 0))) - ++ (lists.sublist 1 (lists.length chars) chars) - ) -) +with lib; +let + chars = + let + lc = strings.splitString "" string; + in + (lists.sublist 1 (lists.length lc - 2) lc); +in +(strings.concatStringsSep "" ( + (lists.singleton (strings.toUpper (lists.elemAt chars 0))) + ++ (lists.sublist 1 (lists.length chars) chars) +)) diff --git a/home/desktop/mimeapps.nix b/home/desktop/mimeapps.nix index 513b45e4..2bedc12f 100644 --- a/home/desktop/mimeapps.nix +++ b/home/desktop/mimeapps.nix @@ -1,13 +1,21 @@ let - emacs = ["emacsclient.desktop" "emacs.desktop"]; - browser = ["firefox.desktop" "librewolf.desktop" "nyxt.desktop"]; -in { - "inode/directory" = ["thunar.desktop"]; - "inode/symlink" = ["thunar.desktop"]; + emacs = [ + "emacsclient.desktop" + "emacs.desktop" + ]; + browser = [ + "firefox.desktop" + "librewolf.desktop" + "nyxt.desktop" + ]; +in +{ + "inode/directory" = [ "thunar.desktop" ]; + "inode/symlink" = [ "thunar.desktop" ]; - "image/jpeg" = ["swayimg.desktop"]; - "image/png" = ["swayimg.desktop"]; - "video/mp4" = ["mpv.desktop"]; + "image/jpeg" = [ "swayimg.desktop" ]; + "image/png" = [ "swayimg.desktop" ]; + "video/mp4" = [ "mpv.desktop" ]; "text/plain" = emacs; "text/richtext" = emacs; @@ -44,10 +52,10 @@ in { "application/x-docbook+xml" = emacs; "application/x-yaml" = emacs; - "application/pdf" = ["evince.desktop"]; - "application/epub+zip" = ["evince.desktop"]; - "application/msword" = ["writer.desktop"]; - "application/zip" = ["xarchiver.desktop"]; + "application/pdf" = [ "evince.desktop" ]; + "application/epub+zip" = [ "evince.desktop" ]; + "application/msword" = [ "writer.desktop" ]; + "application/zip" = [ "xarchiver.desktop" ]; "application/x-extension-htm" = browser; "application/x-extension-html" = browser; @@ -55,23 +63,23 @@ in { "application/x-extension-xhtml" = browser; "application/x-extension-xht" = browser; "application/x-mozilla-bookmarks" = browser; - "application/x-zoom" = ["Zoom.desktop"] ++ browser; + "application/x-zoom" = [ "Zoom.desktop" ] ++ browser; "x-scheme-handler/http" = browser; "x-scheme-handler/https" = browser; "x-scheme-handler/about" = browser; "x-scheme-handler/chrome" = browser; "x-scheme-handler/webcal" = browser; - "x-scheme-handler/geo" = ["openstreetmap-geo-handler.desktop"]; - "x-scheme-handler/mailto" = ["emacsclient-mail.desktop"]; + "x-scheme-handler/geo" = [ "openstreetmap-geo-handler.desktop" ]; + "x-scheme-handler/mailto" = [ "emacsclient-mail.desktop" ]; "x-scheme-handler/unknown" = emacs; - "x-scheme-handler/prusaslicer" = ["PrusaSlicerURLProtocol.desktop"]; + "x-scheme-handler/prusaslicer" = [ "PrusaSlicerURLProtocol.desktop" ]; - "x-scheme-handler/ms-word" = ["writer.desktop"]; - "x-scheme-handler/ms-powerpoint" = ["impress.desktop"]; - "x-scheme-handler/ms-excel" = ["calc.desktop"]; - "x-scheme-handler/msteams" = ["teams-for-linux.desktop"] ++ browser; + "x-scheme-handler/ms-word" = [ "writer.desktop" ]; + "x-scheme-handler/ms-powerpoint" = [ "impress.desktop" ]; + "x-scheme-handler/ms-excel" = [ "calc.desktop" ]; + "x-scheme-handler/msteams" = [ "teams-for-linux.desktop" ] ++ browser; "x-scheme-handler/zoomus" = browser; "x-scheme-handler/zoommtg" = browser; } diff --git a/home/desktop/plasma/default.nix b/home/desktop/plasma/default.nix index ce708009..653c6d8c 100644 --- a/home/desktop/plasma/default.nix +++ b/home/desktop/plasma/default.nix @@ -7,59 +7,64 @@ rc2nix, accentColourName, ... -}: { +}: +{ imports = [ inputs.plasma-manager.homeManagerModules.plasma-manager ../default.nix ./konsole.nix ]; - home.packages = with pkgs; [ + home.packages = [ rc2nix - wl-clipboard - (papirus-icon-theme.override {color = "violet";}) + pkgs.wl-clipboard + (pkgs.papirus-icon-theme.override { color = "violet"; }) ]; services.gpg-agent.pinentryPackage = pkgs.pinentry-qt; programs.plasma = { enable = true; overrideConfig = true; - workspace = let - toCapital = import ../lib/to_capital.nix lib; - in { - clickItemTo = "open"; - theme = "default"; - colorScheme = "Breeze${toCapital config.scheme.variant}"; - iconTheme = "Papirus-${toCapital config.scheme.variant}"; - windowDecorations = { - library = "org.kde.breeze"; - theme = "Breeze"; + workspace = + let + toCapital = import ../lib/to_capital.nix lib; + in + { + clickItemTo = "open"; + theme = "default"; + colorScheme = "Breeze${toCapital config.scheme.variant}"; + iconTheme = "Papirus-${toCapital config.scheme.variant}"; + windowDecorations = { + library = "org.kde.breeze"; + theme = "Breeze"; + }; + cursor = { + inherit (config.home.pointerCursor) size; + theme = config.home.pointerCursor.name; + }; + wallpaper = "${../wallpapers/landscapes/tropic_island_day.jpg}"; }; - cursor = { - inherit (config.home.pointerCursor) size; - theme = config.home.pointerCursor.name; - }; - wallpaper = "${../wallpapers/landscapes/tropic_island_day.jpg}"; - }; - fonts = let - general = { - family = fonts.sansSerif.name; - pointSize = 12; + fonts = + let + general = { + family = fonts.sansSerif.name; + pointSize = 12; + }; + small = { + inherit (general) family; + pointSize = general.pointSize - 2; + }; + fixedWidth = { + family = fonts.monospace.name; + pointSize = 12; + }; + in + { + inherit general small fixedWidth; + menu = general; + toolbar = general; + windowTitle = small; }; - small = { - inherit (general) family; - pointSize = general.pointSize - 2; - }; - fixedWidth = { - family = fonts.monospace.name; - pointSize = 12; - }; - in { - inherit general small fixedWidth; - menu = general; - toolbar = general; - windowTitle = small; - }; hotkeys.commands = { "launch-emacs" = { @@ -103,14 +108,6 @@ ]; }; } - { - name = "org.kde.plasma.pager"; - config.General = { - showWindowIcons = "true"; - showOnlyCurrentScreen = "false"; - wrapPage = "true"; - }; - } "org.kde.plasma.cameraindicator" { systemTray = { @@ -149,7 +146,10 @@ shortcuts = { ksmserver = { - "Lock Session" = ["Screensaver" "Meta+Alt+L"]; + "Lock Session" = [ + "Screensaver" + "Meta+Alt+L" + ]; }; kwin = { "Walk Through Windows of Current Application" = "Alt+`"; @@ -162,9 +162,13 @@ "Switch Window Up" = "Meta+K"; "Invert" = "Meta+Ctrl+I"; "InvertWindow" = "Meta+Ctrl+U"; - "Invert Screen Colors" = []; + "Invert Screen Colors" = [ ]; }; - "services/org.kde.krunner.desktop"."_launch" = ["Meta+Space" "Search" "Alt+F2"]; + "services/org.kde.krunner.desktop"."_launch" = [ + "Meta+Space" + "Search" + "Alt+F2" + ]; }; kwin = { @@ -184,17 +188,6 @@ baloofilerc."Basic Settings"."Indexing-Enabled" = false; bluedevilglobalrc.Global.launchState.value = "disable"; kcminputrc.Keyboard.NumLock = 1; - # powerdevilrc = { - # AC = { - # Display = { - # TurnOffDisplayIdleTimeoutSec = "1800"; - # TurnOffDisplayIdleTimeoutWhenLockedSec = "120"; - # }; - # SuspendAndShutdown = { - # AutoSuspendIdleTimeoutSec = "3600"; - # }; - # }; - # }; plasmanotifyrc = { Notifications = { NormalAlwaysOnTop = true; @@ -219,18 +212,22 @@ }; }; kdeglobals = { - General = let - AccentColor = let - r = config.scheme."${accentColourName}-rgb-r"; - g = config.scheme."${accentColourName}-rgb-g"; - b = config.scheme."${accentColourName}-rgb-b"; - in "${r}, ${g}, ${b}"; - in { - inherit AccentColor; - LastUsedCustomAccentColor = AccentColor; - TerminalApplication = "konsole"; - TerminalService = "org.kde.konsole.desktop"; - }; + General = + let + AccentColor = + let + r = config.scheme."${accentColourName}-rgb-r"; + g = config.scheme."${accentColourName}-rgb-g"; + b = config.scheme."${accentColourName}-rgb-b"; + in + "${r}, ${g}, ${b}"; + in + { + inherit AccentColor; + LastUsedCustomAccentColor = AccentColor; + TerminalApplication = "konsole"; + TerminalService = "org.kde.konsole.desktop"; + }; WM = { # TODO convert to base16 colours at some point activeBackground = "227,229,231"; diff --git a/home/desktop/plasma/konsole.nix b/home/desktop/plasma/konsole.nix index 6ef94d12..5513f956 100644 --- a/home/desktop/plasma/konsole.nix +++ b/home/desktop/plasma/konsole.nix @@ -1,4 +1,5 @@ -{fonts, ...}: { +{ fonts, ... }: +{ programs.konsole = { enable = true; defaultProfile = "One-Light"; diff --git a/home/desktop/sway/avizo/default.nix b/home/desktop/sway/avizo/default.nix index b2b29f7c..5790cf47 100644 --- a/home/desktop/sway/avizo/default.nix +++ b/home/desktop/sway/avizo/default.nix @@ -1,19 +1,19 @@ +{ config, accentColourName, ... }: { - config, - accentColourName, - ... -}: { services.avizo = { enable = true; - settings.default = let - sc = config.scheme; - rgba = colourName: "${sc."${colourName}-rgb-r"}, ${sc."${colourName}-rgb-g"}, ${sc."${colourName}-rgb-b"}"; - in { - background = "rgba(${rgba "base00"}, 0.9)"; - bar-bg-color = "rgba(${rgba "base00"}, 0.9)"; - bar-fg-color = "rgba(${rgba "base05"}, 1.0)"; - border-color = "rgba(${rgba accentColourName}, 1.0)"; - image-opacity = "1.0"; - }; + settings.default = + let + sc = config.scheme; + rgba = + colourName: "${sc."${colourName}-rgb-r"}, ${sc."${colourName}-rgb-g"}, ${sc."${colourName}-rgb-b"}"; + in + { + background = "rgba(${rgba "base00"}, 0.9)"; + bar-bg-color = "rgba(${rgba "base00"}, 0.9)"; + bar-fg-color = "rgba(${rgba "base05"}, 1.0)"; + border-color = "rgba(${rgba accentColourName}, 1.0)"; + image-opacity = "1.0"; + }; }; } diff --git a/home/desktop/sway/default.nix b/home/desktop/sway/default.nix index 4ab827f4..48958818 100644 --- a/home/desktop/sway/default.nix +++ b/home/desktop/sway/default.nix @@ -5,11 +5,13 @@ fonts, accentColourName, ... -}: let +}: +let set-background = pkgs.writeShellScriptBin "set-background" '' ${pkgs.swaybg}/bin/swaybg -m fill -i ${../wallpapers/landscapes/tropic_island_day.jpg} ''; -in { +in +{ imports = [ ../default.nix ./avizo/default.nix @@ -64,24 +66,26 @@ in { tray = "never"; }; }; - gtk = let - toCapital = import ../lib/to_capital.nix lib; - in { - enable = true; - theme = { - package = pkgs.materia-theme; - name = "Materia-${config.scheme.variant}"; + gtk = + let + toCapital = import ../lib/to_capital.nix lib; + in + { + enable = true; + theme = { + package = pkgs.materia-theme; + name = "Materia-${config.scheme.variant}"; + }; + iconTheme = { + package = pkgs.papirus-icon-theme.override { color = "violet"; }; + name = "Papirus-${toCapital config.scheme.variant}"; + }; }; - iconTheme = { - package = pkgs.papirus-icon-theme.override {color = "violet";}; - name = "Papirus-${toCapital config.scheme.variant}"; - }; - }; wayland.windowManager.sway = { enable = true; - package = - pkgs.swayfx.overrideAttrs - (old: {passthru.providedSessions = ["sway"];}); + package = pkgs.swayfx.overrideAttrs (old: { + passthru.providedSessions = [ "sway" ]; + }); swaynag.enable = true; systemd.enable = true; xwayland = true; @@ -106,51 +110,81 @@ in { terminal = "${config.programs.alacritty.package}/bin/alacritty"; menu = "${config.programs.fuzzel.package}/bin/fuzzel"; workspaceAutoBackAndForth = true; - bars = []; + bars = [ ]; gaps = { inner = 5; outer = 0; }; fonts = { - names = [fonts.monospace.name]; + names = [ fonts.monospace.name ]; style = "regular"; size = fonts.sizes.desktop * 1.0; }; - colors = let - sc = config.scheme.withHashtag; - text = toString sc.base05; - indicator = toString sc.${accentColourName}; - background = toString sc.base00; - in { - inherit background; - focused = let - border = toString sc.${accentColourName}; - in { - inherit background text indicator border; - childBorder = border; + colors = + let + sc = config.scheme.withHashtag; + text = toString sc.base05; + indicator = toString sc.${accentColourName}; + background = toString sc.base00; + in + { + inherit background; + focused = + let + border = toString sc.${accentColourName}; + in + { + inherit + background + text + indicator + border + ; + childBorder = border; + }; + focusedInactive = + let + border = toString sc.base04; + in + { + inherit + background + text + indicator + border + ; + childBorder = border; + }; + unfocused = + let + border = toString sc.base03; + in + { + inherit + background + text + indicator + border + ; + childBorder = border; + }; + urgent = + let + border = toString sc.red; + in + { + inherit + background + text + indicator + border + ; + childBorder = border; + }; }; - focusedInactive = let - border = toString sc.base04; - in { - inherit background text indicator border; - childBorder = border; - }; - unfocused = let - border = toString sc.base03; - in { - inherit background text indicator border; - childBorder = border; - }; - urgent = let - border = toString sc.red; - in { - inherit background text indicator border; - childBorder = border; - }; - }; startup = [ - {command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1";} - {command = "${set-background}/bin/set-background";} + { command = "${pkgs.libsForQt5.polkit-kde-agent}/libexec/polkit-kde-authentication-agent-1"; } + { command = "${set-background}/bin/set-background"; } ]; window = { border = 1; @@ -187,9 +221,11 @@ in { ]; }; floating.border = 1; - keybindings = with config; let - modifier = wayland.windowManager.sway.config.modifier; - in + keybindings = + with config; + let + modifier = wayland.windowManager.sway.config.modifier; + in lib.mkOptionDefault { # Movement "${modifier}+comma" = "workspace prev"; diff --git a/home/desktop/sway/foot/default.nix b/home/desktop/sway/foot/default.nix index 34e36ba4..7491e89a 100644 --- a/home/desktop/sway/foot/default.nix +++ b/home/desktop/sway/foot/default.nix @@ -1,8 +1,5 @@ +{ config, fonts, ... }: { - config, - fonts, - ... -}: { programs.foot = { enable = true; server.enable = true; @@ -19,8 +16,12 @@ notify = false; visual = false; }; - cursor = {blink = true;}; - mouse = {hide-when-typing = true;}; + cursor = { + blink = true; + }; + mouse = { + hide-when-typing = true; + }; colors = with config.scheme; rec { alpha = 0.85; background = base00; diff --git a/home/desktop/sway/fuzzel/default.nix b/home/desktop/sway/fuzzel/default.nix index 0279039c..25aea3c2 100644 --- a/home/desktop/sway/fuzzel/default.nix +++ b/home/desktop/sway/fuzzel/default.nix @@ -4,7 +4,8 @@ fonts, accentColourName, ... -}: { +}: +{ programs.fuzzel = { enable = true; settings = { @@ -16,27 +17,27 @@ fields = "filename,name,generic,categories"; fuzzy = true; filter-desktop = true; - terminal = with config.programs; "${ - if alacritty.enable - then alacritty.package - else pkgs.alacritty - }/bin/alacritty -e"; + terminal = + with config.programs; + "${if alacritty.enable then alacritty.package else pkgs.alacritty}/bin/alacritty -e"; lines = 24; width = 80; tabs = 4; layer = "overlay"; }; - colors = let - sc = config.scheme; - in { - background = "${sc.base00}cc"; # 80% Opacity - text = "${sc.base05}ff"; - match = "${sc.red}ff"; - selection = "${sc.base01}ff"; - selection-text = "${sc.base05}ff"; - selection-match = "${sc.red}ff"; - border = "${sc.${accentColourName}}ff"; - }; + colors = + let + sc = config.scheme; + in + { + background = "${sc.base00}cc"; # 80% Opacity + text = "${sc.base05}ff"; + match = "${sc.red}ff"; + selection = "${sc.base01}ff"; + selection-text = "${sc.base05}ff"; + selection-match = "${sc.red}ff"; + border = "${sc.${accentColourName}}ff"; + }; border = { width = 1; radius = 5; diff --git a/home/desktop/sway/mako/default.nix b/home/desktop/sway/mako/default.nix index 264ab892..2c4fd4bc 100644 --- a/home/desktop/sway/mako/default.nix +++ b/home/desktop/sway/mako/default.nix @@ -3,24 +3,27 @@ fonts, accentColourName, ... -}: { - services.mako = let - sc = config.scheme.withHashtag; - in { - enable = true; - anchor = "top-right"; - font = "${fonts.monospace.name} ${toString fonts.sizes.popups}"; - layer = "top"; - markup = true; - maxVisible = 10; - icons = true; - iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}"; - textColor = "${sc.base05}ff"; - progressColor = "over ${sc.red}ff"; - backgroundColor = "${sc.base00}cc"; - borderColor = "${sc.${accentColourName}}ff"; - borderRadius = 5; - borderSize = 1; - defaultTimeout = 0; - }; +}: +{ + services.mako = + let + sc = config.scheme.withHashtag; + in + { + enable = true; + anchor = "top-right"; + font = "${fonts.monospace.name} ${toString fonts.sizes.popups}"; + layer = "top"; + markup = true; + maxVisible = 10; + icons = true; + iconPath = with config.gtk.iconTheme; "${package}/share/icons/${name}"; + textColor = "${sc.base05}ff"; + progressColor = "over ${sc.red}ff"; + backgroundColor = "${sc.base00}cc"; + borderColor = "${sc.${accentColourName}}ff"; + borderRadius = 5; + borderSize = 1; + defaultTimeout = 0; + }; } diff --git a/home/desktop/sway/rofi/default.nix b/home/desktop/sway/rofi/default.nix index 429fbb08..d027d3f3 100644 --- a/home/desktop/sway/rofi/default.nix +++ b/home/desktop/sway/rofi/default.nix @@ -4,18 +4,17 @@ fonts, accentColourName, ... -}: { +}: +{ programs.rofi = { enable = true; package = pkgs.rofi-wayland; - terminal = with config.programs; "${ - if alacritty.enable - then alacritty.package - else pkgs.alacritty - }/bin/alacritty"; + terminal = + with config.programs; + "${if alacritty.enable then alacritty.package else pkgs.alacritty}/bin/alacritty"; font = fonts.monospace.name; location = "center"; - plugins = with pkgs; [rofi-emoji]; + plugins = with pkgs; [ rofi-emoji ]; extraConfig = { modi = "run,drun,ssh,window,emoji,combi"; combi-modi = "drun,ssh,window,emoji"; @@ -36,104 +35,110 @@ display-emoji = " 󰞅 Emoji "; display-combi = " 󰛡 Combi "; }; - theme = with builtins; let - inherit (config.lib.formats.rasi) mkLiteral; - sc = config.scheme; - bg = mkLiteral "rgba (${sc.base00-rgb-r}, ${sc.base00-rgb-g}, ${sc.base00-rgb-b}, 80%)"; - bg2 = mkLiteral "rgba (${sc.base01-rgb-r}, ${sc.base01-rgb-g}, ${sc.base01-rgb-b}, 100%)"; - fg = mkLiteral sc.withHashtag.base05; - fg2 = mkLiteral sc.withHashtag.base04; - border = mkLiteral sc.withHashtag.${accentColour}; - blue = mkLiteral sc.withHashtag.blue; - in { - "*" = { - background-color = mkLiteral "transparent"; - text-color = fg; - font = with fonts; "${monospace.name} ${toString sizes.popups}"; - }; + theme = + with builtins; + let + inherit (config.lib.formats.rasi) mkLiteral; + sc = config.scheme; + bg = mkLiteral "rgba (${sc.base00-rgb-r}, ${sc.base00-rgb-g}, ${sc.base00-rgb-b}, 80%)"; + bg2 = mkLiteral "rgba (${sc.base01-rgb-r}, ${sc.base01-rgb-g}, ${sc.base01-rgb-b}, 100%)"; + fg = mkLiteral sc.withHashtag.base05; + fg2 = mkLiteral sc.withHashtag.base04; + border = mkLiteral sc.withHashtag.${accentColour}; + blue = mkLiteral sc.withHashtag.blue; + in + { + "*" = { + background-color = mkLiteral "transparent"; + text-color = fg; + font = with fonts; "${monospace.name} ${toString sizes.popups}"; + }; - window = { - height = mkLiteral "75%"; - width = mkLiteral "75%"; - border = mkLiteral "1px"; - border-color = border; - border-radius = mkLiteral "5px"; - background-color = bg; - }; + window = { + height = mkLiteral "75%"; + width = mkLiteral "75%"; + border = mkLiteral "1px"; + border-color = border; + border-radius = mkLiteral "5px"; + background-color = bg; + }; - inputbar = { - children = map mkLiteral ["prompt" "entry"]; - padding = mkLiteral "2px"; - }; + inputbar = { + children = map mkLiteral [ + "prompt" + "entry" + ]; + padding = mkLiteral "2px"; + }; - prompt = { - background-color = bg2; - padding = mkLiteral "6px"; - text-color = blue; - border-radius = mkLiteral "5px"; - margin = mkLiteral "20px 0px 0px 20px"; - }; + prompt = { + background-color = bg2; + padding = mkLiteral "6px"; + text-color = blue; + border-radius = mkLiteral "5px"; + margin = mkLiteral "20px 0px 0px 20px"; + }; - textbox-prompt-colon = { - expand = false; - str = "="; - }; + textbox-prompt-colon = { + expand = false; + str = "="; + }; - entry = { - padding = mkLiteral "6px"; - margin = mkLiteral "20px 0px 0px 10px"; - }; + entry = { + padding = mkLiteral "6px"; + margin = mkLiteral "20px 0px 0px 10px"; + }; - listview = { - border = mkLiteral "0px 0px 0px"; - padding = mkLiteral "6px 0px 0px"; - margin = mkLiteral "10px 0px 0px 20px"; - columns = 2; - lines = 5; - }; + listview = { + border = mkLiteral "0px 0px 0px"; + padding = mkLiteral "6px 0px 0px"; + margin = mkLiteral "10px 0px 0px 20px"; + columns = 2; + lines = 5; + }; - element = { - padding = mkLiteral "5px"; - }; + element = { + padding = mkLiteral "5px"; + }; - "element-icon" = { - size = mkLiteral "25px"; - }; + "element-icon" = { + size = mkLiteral "25px"; + }; - "element selected" = { - background-color = bg2; - text-color = blue; - border-radius = mkLiteral "5px"; - }; + "element selected" = { + background-color = bg2; + text-color = blue; + border-radius = mkLiteral "5px"; + }; - mode-switcher = { - spacing = 0; - }; + mode-switcher = { + spacing = 0; + }; - button = { - padding = mkLiteral "10px"; - text-color = fg2; - border-radius = mkLiteral "5px"; - vertical-align = mkLiteral "0.5"; - horizontal-align = mkLiteral "0.5"; - }; + button = { + padding = mkLiteral "10px"; + text-color = fg2; + border-radius = mkLiteral "5px"; + vertical-align = mkLiteral "0.5"; + horizontal-align = mkLiteral "0.5"; + }; - "button selected" = { - background-color = bg2; - text-color = blue; - }; + "button selected" = { + background-color = bg2; + text-color = blue; + }; - message = { - margin = mkLiteral "2px"; - padding = mkLiteral "2px"; - border-radius = mkLiteral "5px"; - }; + message = { + margin = mkLiteral "2px"; + padding = mkLiteral "2px"; + border-radius = mkLiteral "5px"; + }; - textbox = { - padding = mkLiteral "6px"; - margin = mkLiteral "20px 0px 0px 20px"; - text-color = blue; + textbox = { + padding = mkLiteral "6px"; + margin = mkLiteral "20px 0px 0px 20px"; + text-color = blue; + }; }; - }; }; } diff --git a/home/desktop/sway/swayidle/default.nix b/home/desktop/sway/swayidle/default.nix index 469e6572..298a2a73 100644 --- a/home/desktop/sway/swayidle/default.nix +++ b/home/desktop/sway/swayidle/default.nix @@ -1,20 +1,19 @@ +{ config, pkgs, ... }: { - config, - pkgs, - ... -}: { - imports = [../swaylock/default.nix]; - services.swayidle = let - swaylockfx = - pkgs.callPackage ../swaylock/swaylockfx.nix - {swaylock-effects = config.programs.swaylock.package;}; - in { - enable = true; - timeouts = [ - { - timeout = 60 * 15; # 15 minutes - command = "${swaylockfx}/bin/swaylockfx"; - } - ]; - }; + imports = [ ../swaylock/default.nix ]; + services.swayidle = + let + swaylockfx = pkgs.callPackage ../swaylock/swaylockfx.nix { + swaylock-effects = config.programs.swaylock.package; + }; + in + { + enable = true; + timeouts = [ + { + timeout = 60 * 15; # 15 minutes + command = "${swaylockfx}/bin/swaylockfx"; + } + ]; + }; } diff --git a/home/desktop/sway/swaylock/default.nix b/home/desktop/sway/swaylock/default.nix index af8dfded..443fe794 100644 --- a/home/desktop/sway/swaylock/default.nix +++ b/home/desktop/sway/swaylock/default.nix @@ -3,46 +3,48 @@ pkgs, accentColourName, ... -}: { +}: +{ home.packages = with pkgs; [ - (callPackage ./swaylockfx.nix - {swaylock-effects = config.programs.swaylock.package;}) + (callPackage ./swaylockfx.nix { swaylock-effects = config.programs.swaylock.package; }) ]; programs.swaylock = { enable = true; package = pkgs.swaylock-effects; # Settings are specifically for swaylock-effects - settings = let - sc = config.scheme; - in { - indicator-radius = 100; - indicator-thickness = 10; - indicator-caps-lock = true; - ignore-empty-password = true; - show-failed-attempts = true; - effect-blur = "5x3"; - effect-vignette = "0.5:0.5"; - grace = 2; - fade-in = 0.2; - bs-hl-color = sc.base06; - caps-lock-bs-hl-color = sc.base06; - caps-lock-key-hl-color = sc.green; - inside-color = "${sc.base00}cc"; - key-hl-color = sc.green; - layout-bg-color = "${sc.base00}cc"; - layout-border-color = sc.${accentColourName}; - layout-text-color = sc.base05; - ring-color = sc.${accentColourName}; - ring-clear-color = sc.base06; - ring-caps-lock-color = sc.base09; - ring-ver-color = sc.blue; - ring-wrong-color = sc.red; - separator-color = sc.base01; - text-color = sc.base05; - text-clear-color = sc.base06; - text-caps-lock-color = sc.base09; - text-ver-color = sc.blue; - text-wrong-color = sc.red; - }; + settings = + let + sc = config.scheme; + in + { + indicator-radius = 100; + indicator-thickness = 10; + indicator-caps-lock = true; + ignore-empty-password = true; + show-failed-attempts = true; + effect-blur = "5x3"; + effect-vignette = "0.5:0.5"; + grace = 2; + fade-in = 0.2; + bs-hl-color = sc.base06; + caps-lock-bs-hl-color = sc.base06; + caps-lock-key-hl-color = sc.green; + inside-color = "${sc.base00}cc"; + key-hl-color = sc.green; + layout-bg-color = "${sc.base00}cc"; + layout-border-color = sc.${accentColourName}; + layout-text-color = sc.base05; + ring-color = sc.${accentColourName}; + ring-clear-color = sc.base06; + ring-caps-lock-color = sc.base09; + ring-ver-color = sc.blue; + ring-wrong-color = sc.red; + separator-color = sc.base01; + text-color = sc.base05; + text-clear-color = sc.base06; + text-caps-lock-color = sc.base09; + text-ver-color = sc.blue; + text-wrong-color = sc.red; + }; }; } diff --git a/home/desktop/sway/swaylock/swaylockfx.nix b/home/desktop/sway/swaylock/swaylockfx.nix index 0a4353ba..c4d7945b 100644 --- a/home/desktop/sway/swaylock/swaylockfx.nix +++ b/home/desktop/sway/swaylock/swaylockfx.nix @@ -1,6 +1,2 @@ -{ - writeShellScriptBin, - swaylock-effects, - ... -}: +{ writeShellScriptBin, swaylock-effects, ... }: writeShellScriptBin "swaylockfx" "${swaylock-effects}/bin/swaylock --screenshots --clock --indicator --grace-no-mouse" diff --git a/home/desktop/sway/swaync/default.nix b/home/desktop/sway/swaync/default.nix index 42f78b1c..2a234d6a 100644 --- a/home/desktop/sway/swaync/default.nix +++ b/home/desktop/sway/swaync/default.nix @@ -4,357 +4,360 @@ fonts, accentColourName, ... -}: { - home.packages = [pkgs.swaynotificationcenter]; - xdg.configFile."swaync/style.css".text = let - sc = config.scheme.withHashtag; - alpha = "0.85"; - alpha-background = "rgba(${config.scheme.base00-rgb-r}, ${config.scheme.base00-rgb-g}, ${config.scheme.base00-rgb-b}, ${alpha})"; - in '' - * { - all: unset; - font-size: 1.2rem; - font-family: "${fonts.monospace.name}"; - transition: 200ms; - box-shadow: none; - } +}: +{ + home.packages = [ pkgs.swaynotificationcenter ]; + xdg.configFile."swaync/style.css".text = + let + sc = config.scheme.withHashtag; + alpha = "0.85"; + alpha-background = "rgba(${config.scheme.base00-rgb-r}, ${config.scheme.base00-rgb-g}, ${config.scheme.base00-rgb-b}, ${alpha})"; + in + '' + * { + all: unset; + font-size: 1.2rem; + font-family: "${fonts.monospace.name}"; + transition: 200ms; + box-shadow: none; + } - .floating-notifications.background .notification-row .notification-background { - border-radius: 5px; - border: 1px solid ${sc.${accentColourName}}; - margin: 18px; - background-color: ${alpha-background}; - color: ${sc.base05}; - padding: 0; - } + .floating-notifications.background .notification-row .notification-background { + border-radius: 5px; + border: 1px solid ${sc.${accentColourName}}; + margin: 18px; + background-color: ${alpha-background}; + color: ${sc.base05}; + padding: 0; + } - .floating-notifications.background - .notification-row - .notification-background - .notification { - padding: 7px; - border-radius: 5px; - } + .floating-notifications.background + .notification-row + .notification-background + .notification { + padding: 7px; + border-radius: 5px; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content { - margin: 7px; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content { + margin: 7px; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .summary { - color: ${sc.base05}; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .summary { + color: ${sc.base05}; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .time { - color: ${sc.base04}; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .time { + color: ${sc.base04}; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - .notification-content - .body { - color: ${sc.base05}; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + .notification-content + .body { + color: ${sc.base05}; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * { - min-height: 3.4em; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * { + min-height: 3.4em; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action { - border-radius: 5px; - background-color: ${sc.base01}; - color: ${sc.base05}; - margin: 7px; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action { + border-radius: 5px; + background-color: ${sc.base01}; + color: ${sc.base05}; + margin: 7px; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:hover { - background-color: ${sc.base01}; - color: ${sc.base05}; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:hover { + background-color: ${sc.base01}; + color: ${sc.base05}; + } - .floating-notifications.background - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:active { - background-color: ${sc.blue}; - color: ${sc.base00}; - } + .floating-notifications.background + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:active { + background-color: ${sc.blue}; + color: ${sc.base00}; + } - .floating-notifications.background - .notification-row - .notification-background - .close-button { - margin: 7px; - padding: 2px; - border-radius: 5px; - background-color: ${sc.red}; - color: ${sc.base00}; - } + .floating-notifications.background + .notification-row + .notification-background + .close-button { + margin: 7px; + padding: 2px; + border-radius: 5px; + background-color: ${sc.red}; + color: ${sc.base00}; + } - .floating-notifications.background - .notification-row - .notification-background - .close-button:hover { - background-color: ${sc.red}; - color: ${sc.base00}; - } + .floating-notifications.background + .notification-row + .notification-background + .close-button:hover { + background-color: ${sc.red}; + color: ${sc.base00}; + } - .floating-notifications.background - .notification-row - .notification-background - .close-button:active { - background-color: ${sc.red}; - color: ${sc.base00}; - } + .floating-notifications.background + .notification-row + .notification-background + .close-button:active { + background-color: ${sc.red}; + color: ${sc.base00}; + } - .control-center { - border-radius: 5px; - border: 1px solid ${sc.${accentColourName}}; - margin: 18px; - background-color: ${alpha-background}; - color: ${sc.base05}; - padding: 14px; - } + .control-center { + border-radius: 5px; + border: 1px solid ${sc.${accentColourName}}; + margin: 18px; + background-color: ${alpha-background}; + color: ${sc.base05}; + padding: 14px; + } - .control-center .widget-title { - color: ${sc.base05}; - font-size: 1.3em; - } + .control-center .widget-title { + color: ${sc.base05}; + font-size: 1.3em; + } - .control-center .widget-title button { - border-radius: 7px; - background-color: ${sc.base01}; - color: ${sc.base05}; - padding: 8px; - } + .control-center .widget-title button { + border-radius: 7px; + background-color: ${sc.base01}; + color: ${sc.base05}; + padding: 8px; + } - .control-center .widget-title button:hover { - background-color: ${sc.base02}; - color: ${sc.base05}; - } + .control-center .widget-title button:hover { + background-color: ${sc.base02}; + color: ${sc.base05}; + } - .control-center .widget-title button:active { - background-color: ${sc.base03}; - color: ${sc.base05}; - } + .control-center .widget-title button:active { + background-color: ${sc.base03}; + color: ${sc.base05}; + } - .control-center .notification-row .notification-background { - border-radius: 5px; - background-color: ${sc.base01}; - color: ${sc.base05}; - margin-top: 14px; - } + .control-center .notification-row .notification-background { + border-radius: 5px; + background-color: ${sc.base01}; + color: ${sc.base05}; + margin-top: 14px; + } - .control-center .notification-row .notification-background .notification { - padding: 7px; - border-radius: 7px; - } + .control-center .notification-row .notification-background .notification { + padding: 7px; + border-radius: 7px; + } - .control-center - .notification-row - .notification-background - .notification - .notification-content { - margin: 7px; - } + .control-center + .notification-row + .notification-background + .notification + .notification-content { + margin: 7px; + } - .control-center - .notification-row - .notification-background - .notification - .notification-content - .summary { - color: ${sc.base05}; - } + .control-center + .notification-row + .notification-background + .notification + .notification-content + .summary { + color: ${sc.base05}; + } - .control-center - .notification-row - .notification-background - .notification - .notification-content - .time { - color: ${sc.base04}; - } + .control-center + .notification-row + .notification-background + .notification + .notification-content + .time { + color: ${sc.base04}; + } - .control-center - .notification-row - .notification-background - .notification - .notification-content - .body { - color: ${sc.base05}; - } + .control-center + .notification-row + .notification-background + .notification + .notification-content + .body { + color: ${sc.base05}; + } - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * { - min-height: 3.4em; - } + .control-center + .notification-row + .notification-background + .notification + > *:last-child + > * { + min-height: 3.4em; + } - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action { - border-radius: 7px; - background-color: ${sc.base00}; - color: ${sc.base05}; - margin: 7px; - } + .control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action { + border-radius: 7px; + background-color: ${sc.base00}; + color: ${sc.base05}; + margin: 7px; + } - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:hover { - background-color: ${sc.base01};; - color: ${sc.base05}; - } + .control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:hover { + background-color: ${sc.base01};; + color: ${sc.base05}; + } - .control-center - .notification-row - .notification-background - .notification - > *:last-child - > * - .notification-action:active { - background-color: ${sc.blue}; - color: ${sc.base05}; - } + .control-center + .notification-row + .notification-background + .notification + > *:last-child + > * + .notification-action:active { + background-color: ${sc.blue}; + color: ${sc.base05}; + } - .control-center .notification-row .notification-background .close-button { - margin: 7px; - padding: 2px; - border-radius: 6.3px; - background-color: ${sc.red}; - color: ${sc.base00}; - } + .control-center .notification-row .notification-background .close-button { + margin: 7px; + padding: 2px; + border-radius: 6.3px; + background-color: ${sc.red}; + color: ${sc.base00}; + } - .control-center .notification-row .notification-background .close-button:hover { - background-color: ${sc.red}; - color: ${sc.base00}; - } + .control-center .notification-row .notification-background .close-button:hover { + background-color: ${sc.red}; + color: ${sc.base00}; + } - .control-center - .notification-row - .notification-background - .close-button:active { - background-color: ${sc.red}; - color: ${sc.base00}; - } + .control-center + .notification-row + .notification-background + .close-button:active { + background-color: ${sc.red}; + color: ${sc.base00}; + } - .control-center .notification-row .notification-background:hover { - background-color: ${sc.base00}; - color: ${sc.base05}; - } + .control-center .notification-row .notification-background:hover { + background-color: ${sc.base00}; + color: ${sc.base05}; + } - .control-center .notification-row .notification-background:active { - background-color: ${sc.blue}; - color: ${sc.base05}; - } + .control-center .notification-row .notification-background:active { + background-color: ${sc.blue}; + color: ${sc.base05}; + } - progressbar, - progress, - trough { - border-radius: 12.6px; - } + progressbar, + progress, + trough { + border-radius: 12.6px; + } - .notification.critical progress { - background-color: ${sc.red}; - } + .notification.critical progress { + background-color: ${sc.red}; + } - .notification.low progress, - .notification.normal progress { - background-color: ${sc.blue}; - } + .notification.low progress, + .notification.normal progress { + background-color: ${sc.blue}; + } - trough { - background-color: ${sc.base00}; - } + trough { + background-color: ${sc.base00}; + } - .control-center trough { - background-color: ${sc.base03}; - } + .control-center trough { + background-color: ${sc.base03}; + } - .control-center-dnd { - margin-top: 5px; - border-radius: 8px; - background: ${sc.base00}; - border: 1px solid ${sc.base03}; - } + .control-center-dnd { + margin-top: 5px; + border-radius: 8px; + background: ${sc.base00}; + border: 1px solid ${sc.base03}; + } - .control-center-dnd:checked { - background: ${sc.base00}; - } + .control-center-dnd:checked { + background: ${sc.base00}; + } - .control-center-dnd slider { - background: ${sc.base03}; - border-radius: 8px; - } + .control-center-dnd slider { + background: ${sc.base03}; + border-radius: 8px; + } - .widget-dnd { - margin: 0px; - font-size: 1.1rem; - } + .widget-dnd { + margin: 0px; + font-size: 1.1rem; + } - .widget-dnd > switch { - font-size: initial; - border-radius: 8px; - background: ${sc.base00}; - border: 1px solid ${sc.base03}; - } + .widget-dnd > switch { + font-size: initial; + border-radius: 8px; + background: ${sc.base00}; + border: 1px solid ${sc.base03}; + } - .widget-dnd > switch:checked { - background: ${sc.base00}; - } + .widget-dnd > switch:checked { + background: ${sc.base00}; + } - .widget-dnd > switch slider { - background: ${sc.base01}; - border-radius: 8px; - border: 1px solid ${sc.${accentColourName}}; - } + .widget-dnd > switch slider { + background: ${sc.base01}; + border-radius: 8px; + border: 1px solid ${sc.${accentColourName}}; + } - ''; + ''; } diff --git a/home/desktop/sway/waybar/default.nix b/home/desktop/sway/waybar/default.nix index 54166499..51313064 100644 --- a/home/desktop/sway/waybar/default.nix +++ b/home/desktop/sway/waybar/default.nix @@ -4,10 +4,11 @@ fonts, accentColourName, ... -}: { +}: +{ systemd.user.targets.tray.Unit = { Description = "Home Manager System Tray"; - Requires = ["graphical-session.target"]; + Requires = [ "graphical-session.target" ]; }; programs.waybar = { enable = true; @@ -21,7 +22,7 @@ "sway/workspaces" "sway/window" ]; - "modules-center" = []; + "modules-center" = [ ]; "modules-right" = [ "mpris" "custom/notification" @@ -50,12 +51,12 @@ }; all-outputs = false; persistent-workspaces = { - "1" = []; - "2" = []; - "3" = []; - "4" = []; - "5" = []; - "6" = []; + "1" = [ ]; + "2" = [ ]; + "3" = [ ]; + "4" = [ ]; + "5" = [ ]; + "6" = [ ]; }; }; "sway/window" = { @@ -105,7 +106,7 @@ "paused" = "󰏤"; "stopped" = "󰓛"; }; - "ignored-players" = []; + "ignored-players" = [ ]; }; pulseaudio = { scroll-step = 5; @@ -115,7 +116,11 @@ format-source-muted = "󰍭 "; format-icons = { car = "󰄍 "; - default = ["󰕿 " "󰖀 " "󰕾 "]; + default = [ + "󰕿 " + "󰖀 " + "󰕾 " + ]; hands-free = "󰥰 "; headset = "󰋎 "; phone = "󰏲 "; @@ -135,14 +140,25 @@ format = "󰻠 {usage}%"; tooltip = false; }; - memory = {format = "󰍛 {}%";}; + memory = { + format = "󰍛 {}%"; + }; temperature = { critical-threshold = 80; format = "{icon} {temperatureC}°C"; - format-icons = ["󱃃" "󰔏" "󱃂"]; + format-icons = [ + "󱃃" + "󰔏" + "󱃂" + ]; }; network = { - format-icons = ["󰤟 " "󰤢 " "󰤥 " "󰤨 "]; + format-icons = [ + "󰤟 " + "󰤢 " + "󰤥 " + "󰤨 " + ]; format-wifi = "{icon}"; format-ethernet = "󰈁 "; format-linked = "󰈂 "; @@ -167,15 +183,17 @@ mode-mon-col = 3; weeks-pos = "left"; on-scroll = 1; - format = let - sc = config.scheme.withHashtag; - in { - months = "{}"; - weeks = "W{}"; - weekdays = "{}"; - days = "{}"; - today = "{}"; - }; + format = + let + sc = config.scheme.withHashtag; + in + { + months = "{}"; + weeks = "W{}"; + weekdays = "{}"; + days = "{}"; + today = "{}"; + }; }; actions = { on-scroll-up = "shift_up"; @@ -186,7 +204,17 @@ backlight = { format = "{icon}"; tooltip-format = "{percent}%"; - format-icons = [" " " " " " " " " " " " " " " " " "]; + format-icons = [ + " " + " " + " " + " " + " " + " " + " " + " " + " " + ]; }; battery = { states = { @@ -197,144 +225,162 @@ format-charging = "󰂄 "; format-plugged = "󰚥 "; tooltip-format = "{capacity}% {time}"; - format-icons = ["󱃍 " "󰁺 " "󰁻 " "󰁼 " "󰁽 " "󰁾 " "󰁿 " "󰂀 " "󰂁 " "󰂂 " "󰁹 "]; + format-icons = [ + "󱃍 " + "󰁺 " + "󰁻 " + "󰁼 " + "󰁽 " + "󰁾 " + "󰁿 " + "󰂀 " + "󰂁 " + "󰂂 " + "󰁹 " + ]; }; - "custom/notification" = let - swaync = pkgs.swaynotificationcenter; - in { - tooltip = false; - format = "{icon}{}"; - format-icons = { - notification = "󱅫 "; - none = "󰂚 "; - dnd-notification = "󰅸 "; - dnd-none = "󰂜 "; - inhibited-notification = "󰅸 "; - inhibited-none = "󰂜 "; - dnd-inhibited-notification = "󰅸 "; - dnd-inhibited-none = "󰂜 "; + "custom/notification" = + let + swaync = pkgs.swaynotificationcenter; + in + { + tooltip = false; + format = "{icon}{}"; + format-icons = { + notification = "󱅫 "; + none = "󰂚 "; + dnd-notification = "󰅸 "; + dnd-none = "󰂜 "; + inhibited-notification = "󰅸 "; + inhibited-none = "󰂜 "; + dnd-inhibited-notification = "󰅸 "; + dnd-inhibited-none = "󰂜 "; + }; + return-type = "json"; + exec-if = "which ${swaync}/bin/swaync-client"; + exec = "${swaync}/bin/swaync-client -swb"; + on-click = "${swaync}/bin/swaync-client -t -sw"; + on-click-right = "${swaync}/bin/swaync-client -d -sw"; + escape = true; + }; + "custom/weather" = + let + date-format = "%Y-%m-%d"; + custom-indicator = "{ICON}{temp_C}({FeelsLikeC})"; + in + { + format = "{}°"; + tooltip = true; + interval = 900; # Every 15 minutes + exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"''; + return-type = "json"; }; - return-type = "json"; - exec-if = "which ${swaync}/bin/swaync-client"; - exec = "${swaync}/bin/swaync-client -swb"; - on-click = "${swaync}/bin/swaync-client -t -sw"; - on-click-right = "${swaync}/bin/swaync-client -d -sw"; - escape = true; - }; - "custom/weather" = let - date-format = "%Y-%m-%d"; - custom-indicator = "{ICON}{temp_C}({FeelsLikeC})"; - in { - format = "{}°"; - tooltip = true; - interval = 900; # Every 15 minutes - exec = ''${pkgs.wttrbar}/bin/wttrbar --location Didcot --date-format "${date-format}" --custom-indicator "${custom-indicator}"''; - return-type = "json"; - }; tray = { icon-size = builtins.floor fonts.sizes.popups; show-passive-items = true; spacing = 5; }; }; - style = let - sc = config.scheme.withHashtag; - alpha = "0.85"; - in '' - * { - all: unset; - font-size: ${toString fonts.sizes.popups}px; - font-family: ${fonts.monospace.name}; - } + style = + let + sc = config.scheme.withHashtag; + alpha = "0.85"; + in + '' + * { + all: unset; + font-size: ${toString fonts.sizes.popups}px; + font-family: ${fonts.monospace.name}; + } - window { - background: transparent; - box-shadow: none; - } + window { + background: transparent; + box-shadow: none; + } - window > box { - color: ${sc.base05}; - background: alpha(${sc.base00}, ${alpha}); - margin: 5px 5px 0px; - padding: 0px; - border-top: 1px solid ${sc.base04}; - border-radius: 5px; - } + window > box { + color: ${sc.base05}; + background: alpha(${sc.base00}, ${alpha}); + margin: 5px 5px 0px; + padding: 0px; + border-top: 1px solid ${sc.base04}; + border-radius: 5px; + } - tooltip { - background: ${sc.base00}; - border: 1px solid ${sc.${accentColourName}}; - border-radius: 5px; - box-shadow: none; - } + tooltip { + background: ${sc.base00}; + border: 1px solid ${sc.${accentColourName}}; + border-radius: 5px; + box-shadow: none; + } - tooltip label { - color: ${sc.base05}; - border: none; - padding: 5px; - margin: 0px; - } + tooltip label { + color: ${sc.base05}; + border: none; + padding: 5px; + margin: 0px; + } - #workspaces, - #window, - #mpris, - #pulseaudio, - #network, - #bluetooth, - #backlight, - #battery, - #clock, - #custom-notification, - #custom-weather, - #tray { - margin: 0px; - padding: 1px 5px; - } + #workspaces, + #window, + #mpris, + #pulseaudio, + #network, + #bluetooth, + #backlight, + #battery, + #clock, + #custom-notification, + #custom-weather, + #tray { + margin: 0px; + padding: 1px 5px; + } - #workspaces, - #window, - #mpris, - #tray, - #backlight, - #battery, - #custom-weather { - color: ${sc.base05}; - } + #workspaces, + #window, + #mpris, + #tray, + #backlight, + #battery, + #custom-weather { + color: ${sc.base05}; + } - #workspaces button { - background: transparent; - color: ${sc.base05}; - margin: 0px; - padding: 0px 5px; - } - #workspaces button.persistent { - color: ${sc.base03}; - } - #workspaces button.focused { - color: ${sc.${accentColourName}}; - } - #workspaces button.urgent { - color: ${sc.base09}; - } + #workspaces button { + background: transparent; + color: ${sc.base05}; + margin: 0px; + padding: 0px 5px; + } + #workspaces button.persistent { + color: ${sc.base03}; + } + #workspaces button.focused { + color: ${sc.${accentColourName}}; + } + #workspaces button.urgent { + color: ${sc.base09}; + } - #custom-notification { - color: ${sc.base08}; - } - #pulseaudio { - color: ${sc.base09}; - } - #network { - color: ${sc.base0A}; - } - #bluetooth { - color: ${sc.base0B}; - } - #clock.calendar { - color: ${sc.base0C}; - } - #clock { - color: ${sc.base0D}; - } - ''; + #custom-notification { + color: ${sc.base08}; + } + #pulseaudio { + color: ${sc.base09}; + } + #network { + color: ${sc.base0A}; + } + #bluetooth { + color: ${sc.base0B}; + } + #clock.calendar { + color: ${sc.base0C}; + } + #clock { + color: ${sc.base0D}; + } + ''; }; } diff --git a/home/desktop/sway/wlogout/default.nix b/home/desktop/sway/wlogout/default.nix index 730d0025..c0ef7c8b 100644 --- a/home/desktop/sway/wlogout/default.nix +++ b/home/desktop/sway/wlogout/default.nix @@ -1,8 +1,5 @@ +{ config, fonts, ... }: { - config, - fonts, - ... -}: { programs.wlogout = { enable = true; layout = [ @@ -25,53 +22,55 @@ keybind = "l"; } ]; - style = let - sc = config.scheme.withHashtag; - shutdownIcon = ./icons/shutdown.png; - rebootIcon = ./icons/reboot.png; - logoutIcon = ./icons/logout.png; - in '' - * { - font-size: ${toString fonts.sizes.popups}px; - font-family: "${fonts.sansSerif.name}"; - } + style = + let + sc = config.scheme.withHashtag; + shutdownIcon = ./icons/shutdown.png; + rebootIcon = ./icons/reboot.png; + logoutIcon = ./icons/logout.png; + in + '' + * { + font-size: ${toString fonts.sizes.popups}px; + font-family: "${fonts.sansSerif.name}"; + } - window { - border: none; - background-color: transparent; - } + window { + border: none; + background-color: transparent; + } - button { - background-color: ${sc.base00}; - background-repeat: no-repeat; - background-position: center; - background-size: 25%; - box-shadow: none; - margin: 5px; - color: ${sc.base05}; - } + button { + background-color: ${sc.base00}; + background-repeat: no-repeat; + background-position: center; + background-size: 25%; + box-shadow: none; + margin: 5px; + color: ${sc.base05}; + } - button:hover { - background-color: ${sc.base01}; - color: ${sc.base05}; - } + button:hover { + background-color: ${sc.base01}; + color: ${sc.base05}; + } - button:focus { - background-color: ${sc.base02}; - color: ${sc.base05}; - } + button:focus { + background-color: ${sc.base02}; + color: ${sc.base05}; + } - #shutdown { - background-image: url("${shutdownIcon}"); - } + #shutdown { + background-image: url("${shutdownIcon}"); + } - #reboot { - background-image: url("${rebootIcon}"); - } + #reboot { + background-image: url("${rebootIcon}"); + } - #logout { - background-image: url("${logoutIcon}"); - } - ''; + #logout { + background-image: url("${logoutIcon}"); + } + ''; }; } diff --git a/home/emacs/emacs-packages.nix b/home/emacs/emacs-packages.nix index d85957d1..2da2a60b 100644 --- a/home/emacs/emacs-packages.nix +++ b/home/emacs/emacs-packages.nix @@ -1,5 +1,4 @@ -epkgs: -with epkgs; [ +epkgs: with epkgs; [ # UI base16-theme all-the-icons diff --git a/home/emacs/luarocks/graph-toolkit.nix b/home/emacs/luarocks/graph-toolkit.nix index c0c8dd54..78c5eb05 100644 --- a/home/emacs/luarocks/graph-toolkit.nix +++ b/home/emacs/luarocks/graph-toolkit.nix @@ -14,24 +14,36 @@ buildLuarocksPackage { (fetchurl { url = "mirror://luarocks/graph-toolkit-scm-1.rockspec"; sha256 = "0hsrf7k45w8ri18mdrx44mv1kr4zfr5mg76cxi8nnr30ssrblvgb"; - }) - .outPath; - src = fetchgit (removeAttrs (builtins.fromJSON '' { - "url": "https://github.com/franko/graph-toolkit", - "rev": "126a11bdbb98faf785c373516a288b7fa609f824", - "date": "2015-01-02T08:44:01-08:00", - "path": "/nix/store/gbwbjrl4j42kaqk3pjzvmckmr6dimkd0-graph-toolkit", - "sha256": "1pqjpqfandi7brk2213vlq891bl8drb0q32m5wmf0l21li0l4zrp", - "hash": "sha256-N39CQaRBUOAqL1UMDFZuiK6QEKZ7BCFmXic2qxy+Et8=", - "fetchLFS": false, - "fetchSubmodules": true, - "deepClone": false, - "leaveDotGit": false - } - '') ["date" "path" "sha256"]); + }).outPath; + src = fetchgit ( + removeAttrs + (builtins.fromJSON '' + { + "url": "https://github.com/franko/graph-toolkit", + "rev": "126a11bdbb98faf785c373516a288b7fa609f824", + "date": "2015-01-02T08:44:01-08:00", + "path": "/nix/store/gbwbjrl4j42kaqk3pjzvmckmr6dimkd0-graph-toolkit", + "sha256": "1pqjpqfandi7brk2213vlq891bl8drb0q32m5wmf0l21li0l4zrp", + "hash": "sha256-N39CQaRBUOAqL1UMDFZuiK6QEKZ7BCFmXic2qxy+Et8=", + "fetchLFS": false, + "fetchSubmodules": true, + "deepClone": false, + "leaveDotGit": false + } + '') + [ + "date" + "path" + "sha256" + ] + ); disabled = luaOlder "5.1"; - propagatedBuildInputs = [lua agg freetype]; + propagatedBuildInputs = [ + lua + agg + freetype + ]; meta = { homepage = "http://franko.github.io/graph-toolkit/"; diff --git a/home/emacs/luarocks/scilua.nix b/home/emacs/luarocks/scilua.nix index bb46baa8..b423e1a2 100644 --- a/home/emacs/luarocks/scilua.nix +++ b/home/emacs/luarocks/scilua.nix @@ -6,29 +6,33 @@ callPackage, luajit, openblas, -}: let - xsys = callPackage ./xsys.nix {}; +}: +let + xsys = callPackage ./xsys.nix { }; in - buildLuarocksPackage { - pname = "sci"; - version = "1.0.0.beta12-1"; - knownRockspec = - (fetchurl { - url = "mirror://luarocks/sci-1.0.0.beta12-1.rockspec"; - sha256 = "0lprn9x4zw767hdz8lyxmwrrfyn5xj3x50pm9b4qiwy8992mg00r"; - }) - .outPath; - src = fetchurl { - url = "https://github.com/stepelu/lua-sci/archive/v1.0.0-beta12.tar.gz"; - sha256 = "0a45r7n13gfqckpdp1bmizqvjadn8nc5d6ff9gjw860g3i75sy2h"; - }; +buildLuarocksPackage { + pname = "sci"; + version = "1.0.0.beta12-1"; + knownRockspec = + (fetchurl { + url = "mirror://luarocks/sci-1.0.0.beta12-1.rockspec"; + sha256 = "0lprn9x4zw767hdz8lyxmwrrfyn5xj3x50pm9b4qiwy8992mg00r"; + }).outPath; + src = fetchurl { + url = "https://github.com/stepelu/lua-sci/archive/v1.0.0-beta12.tar.gz"; + sha256 = "0a45r7n13gfqckpdp1bmizqvjadn8nc5d6ff9gjw860g3i75sy2h"; + }; - disabled = (luaOlder "5.1") || (luaAtLeast "5.4"); - propagatedBuildInputs = [luajit xsys openblas]; + disabled = (luaOlder "5.1") || (luaAtLeast "5.4"); + propagatedBuildInputs = [ + luajit + xsys + openblas + ]; - meta = { - homepage = "https://github.com/stepelu/lua-sci"; - description = "Scientific Computing with LuaJIT"; - license.fullName = "MIT"; - }; - } + meta = { + homepage = "https://github.com/stepelu/lua-sci"; + description = "Scientific Computing with LuaJIT"; + license.fullName = "MIT"; + }; +} diff --git a/home/emacs/luarocks/xsys.nix b/home/emacs/luarocks/xsys.nix index 6dc41c2c..a43daac3 100644 --- a/home/emacs/luarocks/xsys.nix +++ b/home/emacs/luarocks/xsys.nix @@ -12,15 +12,14 @@ buildLuarocksPackage { (fetchurl { url = "mirror://luarocks/xsys-1.0.2-1.rockspec"; sha256 = "0jlyrwbzh6fi68msdynp4bbihyww4i3yk0qh859xlwqhfy5cza7p"; - }) - .outPath; + }).outPath; src = fetchurl { url = "https://github.com/stepelu/lua-xsys/archive/v1.0.2.tar.gz"; sha256 = "1zwrlp6bghq8c12kyqc1ic7mrn8lf3d42755h8q2wxwhy1i3xqyh"; }; disabled = (luaOlder "5.1") || (luaAtLeast "5.4"); - propagatedBuildInputs = [luajit]; + propagatedBuildInputs = [ luajit ]; meta = { homepage = "http://scilua.org/xsys.html"; diff --git a/home/games/default.nix b/home/games/default.nix index 5acf67a2..a3bbfbb3 100644 --- a/home/games/default.nix +++ b/home/games/default.nix @@ -1,10 +1,11 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ home.packages = with pkgs; [ prismlauncher cartridges (lutris.override { steamSupport = false; - extraPkgs = pkgs: with pkgs; [wineWowPackages.waylandFull]; + extraPkgs = pkgs: with pkgs; [ wineWowPackages.waylandFull ]; }) ]; } diff --git a/home/personal.nix b/home/personal.nix index f1c002ef..c448f4f9 100644 --- a/home/personal.nix +++ b/home/personal.nix @@ -1,5 +1,6 @@ -{pkgs, ...}: { - imports = [./default.nix]; +{ pkgs, ... }: +{ + imports = [ ./default.nix ]; home.packages = with pkgs; [ kdePackages.ktorrent prusa-slicer diff --git a/home/scripts/default.nix b/home/scripts/default.nix index e6d5319c..74a264a8 100644 --- a/home/scripts/default.nix +++ b/home/scripts/default.nix @@ -1,12 +1,10 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ home = { packages = [ - (pkgs.writeShellScriptBin "git-sync-all" - (builtins.readFile ./shell/git-sync-all.sh)) - (pkgs.writeShellScriptBin "rsync-local-config" - (builtins.readFile ./shell/rsync-local-config.sh)) - (pkgs.writeShellScriptBin "xdg-query-program" - (builtins.readFile ./shell/xdg-query-program.sh)) + (pkgs.writeShellScriptBin "git-sync-all" (builtins.readFile ./shell/git-sync-all.sh)) + (pkgs.writeShellScriptBin "rsync-local-config" (builtins.readFile ./shell/rsync-local-config.sh)) + (pkgs.writeShellScriptBin "xdg-query-program" (builtins.readFile ./shell/xdg-query-program.sh)) ]; shellAliases = { gsa = "git-sync-all"; diff --git a/home/scripts/ukaea-vpn.nix b/home/scripts/ukaea-vpn.nix index dfad4f74..aab811bc 100644 --- a/home/scripts/ukaea-vpn.nix +++ b/home/scripts/ukaea-vpn.nix @@ -1,2 +1,2 @@ -pkgs: (pkgs.writeShellScriptBin "ukaea-vpn-connect" - "sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf}") +pkgs: +(pkgs.writeShellScriptBin "ukaea-vpn-connect" "sudo ${pkgs.openfortivpn}/bin/openfortivpn -c ${./ukaea-vpn.conf}") diff --git a/home/services/email/default.nix b/home/services/email/default.nix index 50f605c5..1582376e 100644 --- a/home/services/email/default.nix +++ b/home/services/email/default.nix @@ -1,12 +1,8 @@ +{ config, pkgs, ... }: { - config, - pkgs, - ... -}: { home.packages = with pkgs; [ protonmail-bridge-gui - (writeShellScriptBin "mbsync-ensure-pass" - (builtins.readFile ./mbsync-ensure-pass.sh)) + (writeShellScriptBin "mbsync-ensure-pass" (builtins.readFile ./mbsync-ensure-pass.sh)) (writeShellScriptBin "davmail-setup" '' systemctl --user restart davmail # Ensure config file is present systemctl --user stop davmail @@ -19,112 +15,132 @@ }; accounts.email = { maildirBasePath = "Mail"; - accounts = let - realName = "Evie Litherland-Smith"; - in { - proton = let - address = "e.litherlandsmith@proton.me"; - host = "127.0.0.1"; - tls.enable = false; - in { - inherit realName address; - primary = true; - maildir.path = "Proton"; - imap = { - inherit host tls; - port = 1143; - }; - smtp = { - inherit host tls; - port = 1025; - }; - aliases = ["evie@xenia.me.uk" "evie@litherlandsmith.slmail.me"]; - userName = address; - passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; - mu.enable = true; - msmtp = { - enable = true; - extraConfig = { - tls = "off"; - auth = "login"; + accounts = + let + realName = "Evie Litherland-Smith"; + in + { + proton = + let + address = "e.litherlandsmith@proton.me"; + host = "127.0.0.1"; + tls.enable = false; + in + { + inherit realName address; + primary = true; + maildir.path = "Proton"; + imap = { + inherit host tls; + port = 1143; + }; + smtp = { + inherit host tls; + port = 1025; + }; + aliases = [ + "evie@xenia.me.uk" + "evie@litherlandsmith.slmail.me" + ]; + userName = address; + passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; + mu.enable = true; + msmtp = { + enable = true; + extraConfig = { + tls = "off"; + auth = "login"; + }; + }; + mbsync = { + enable = true; + create = "both"; + expunge = "both"; + remove = "both"; + patterns = [ + "*" + "!All Mail" + "!Labels*" + "!Starred" + "!Recovered Messages" + ]; + subFolders = "Verbatim"; + extraConfig.account.AuthMechs = "LOGIN"; + }; }; - }; - mbsync = { - enable = true; - create = "both"; - expunge = "both"; - remove = "both"; - patterns = ["*" "!All Mail" "!Labels*" "!Starred" "!Recovered Messages"]; - subFolders = "Verbatim"; - extraConfig.account.AuthMechs = "LOGIN"; - }; - }; - icloud = let - address = "e.litherlandsmith@icloud.com"; - in { - inherit realName address; - primary = false; - maildir.path = "iCloud"; - imap.host = "imap.mail.me.com"; - smtp.host = "smtp.mail.me.com"; - userName = address; - passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; - mu.enable = true; - msmtp.enable = true; - mbsync = { - enable = true; - create = "both"; - expunge = "both"; - remove = "both"; - patterns = ["*" "!Notes"]; - subFolders = "Verbatim"; - }; - }; - outlook = let - address = "evie.litherland-smith@ukaea.uk"; - host = "127.0.0.1"; - tls.enable = false; - in { - inherit realName address; - primary = false; - maildir.path = "Outlook"; - imap = { - inherit host tls; - port = 1144; - }; - smtp = { - inherit host tls; - port = 1026; - }; - aliases = ["elitherl@jet.uk"]; - userName = address; - passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; - mu.enable = true; - msmtp = { - enable = true; - extraConfig = { - tls = "off"; - auth = "login"; + icloud = + let + address = "e.litherlandsmith@icloud.com"; + in + { + inherit realName address; + primary = false; + maildir.path = "iCloud"; + imap.host = "imap.mail.me.com"; + smtp.host = "smtp.mail.me.com"; + userName = address; + passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; + mu.enable = true; + msmtp.enable = true; + mbsync = { + enable = true; + create = "both"; + expunge = "both"; + remove = "both"; + patterns = [ + "*" + "!Notes" + ]; + subFolders = "Verbatim"; + }; + }; + outlook = + let + address = "evie.litherland-smith@ukaea.uk"; + host = "127.0.0.1"; + tls.enable = false; + in + { + inherit realName address; + primary = false; + maildir.path = "Outlook"; + imap = { + inherit host tls; + port = 1144; + }; + smtp = { + inherit host tls; + port = 1026; + }; + aliases = [ "elitherl@jet.uk" ]; + userName = address; + passwordCommand = "${pkgs.libsecret}/bin/secret-tool lookup email ${address}"; + mu.enable = true; + msmtp = { + enable = true; + extraConfig = { + tls = "off"; + auth = "login"; + }; + }; + mbsync = { + enable = true; + create = "both"; + expunge = "both"; + remove = "both"; + patterns = [ + "*" + "!Conversation History" + "!Snoozed" + "!Social Activity Notifications" + "!Sync Issues*" + "!Unsent Messages" + ]; + subFolders = "Verbatim"; + extraConfig.account.AuthMechs = "LOGIN"; + }; }; - }; - mbsync = { - enable = true; - create = "both"; - expunge = "both"; - remove = "both"; - patterns = [ - "*" - "!Conversation History" - "!Snoozed" - "!Social Activity Notifications" - "!Sync Issues*" - "!Unsent Messages" - ]; - subFolders = "Verbatim"; - extraConfig.account.AuthMechs = "LOGIN"; - }; }; - }; }; programs = { mu.enable = true; @@ -132,26 +148,26 @@ mbsync = { enable = true; groups.inboxes = { - proton = ["INBOX"]; - icloud = ["INBOX"]; - outlook = ["INBOX"]; + proton = [ "INBOX" ]; + icloud = [ "INBOX" ]; + outlook = [ "INBOX" ]; }; }; }; systemd.user.services.davmail = { Unit = { Description = "Davmail server"; - Wants = ["network-online.target"]; - After = ["network-online.target"]; + Wants = [ "network-online.target" ]; + After = [ "network-online.target" ]; }; Service = { - Environment = ["PATH=/run/current-system/sw/bin/:$PATH"]; + Environment = [ "PATH=/run/current-system/sw/bin/:$PATH" ]; Restart = "always"; ExecStartPre = with config.home; '' /bin/sh -c "if [ ! -f ${homeDirectory}/.davmail.properties ]; then cp ${./davmail.properties} ${homeDirectory}/.davmail.properties; fi; chmod 644 ${homeDirectory}/.davmail.properties" ''; ExecStart = "${pkgs.davmail}/bin/davmail -notray ${config.home.homeDirectory}/.davmail.properties"; }; - Install.WantedBy = ["default.target"]; + Install.WantedBy = [ "default.target" ]; }; } diff --git a/home/services/password-store/default.nix b/home/services/password-store/default.nix index 0eec40d8..278fd499 100644 --- a/home/services/password-store/default.nix +++ b/home/services/password-store/default.nix @@ -3,16 +3,19 @@ lib, pkgs, ... -}: { - xdg.configFile."pass-git-helper/git-pass-mapping.ini".source = - ./git-pass-mapping.ini; +}: +{ + xdg.configFile."pass-git-helper/git-pass-mapping.ini".source = ./git-pass-mapping.ini; programs = { gpg.enable = true; password-store = { enable = true; - package = - pkgs.pass-nodmenu.withExtensions - (exts: with exts; [pass-update pass-import]); # pass-audit + package = pkgs.pass-nodmenu.withExtensions ( + exts: with exts; [ + pass-update + pass-import + ] + ); # pass-audit settings = { PASSWORD_STORE_DIR = "${config.home.homeDirectory}/.password-store"; PASSWORD_STORE_ENABLE_EXTENSIONS = "true"; diff --git a/home/shell/bottom.nix b/home/shell/bottom.nix index cb606628..816f8c39 100644 --- a/home/shell/bottom.nix +++ b/home/shell/bottom.nix @@ -1,8 +1,5 @@ +{ config, accentColourName, ... }: { - config, - accentColourName, - ... -}: { programs.bottom = { enable = true; settings = { @@ -13,33 +10,42 @@ enable_gpu = true; enable_cache_memory = true; }; - colors = let - sc = config.scheme.withHashtag; - rainbow = with sc; [red yellow green cyan blue magenta]; - in { - table_header_color = sc.base05; - all_cpu_color = sc.base05; - avg_cpu_color = sc.base05; - cpu_core_colors = rainbow; - ram_color = sc.red; - cache_color = sc.green; - swap_color = sc.blue; - rx_color = sc.green; - tx_color = sc.blue; - widget_title_color = sc.${accentColourName}; - border_color = sc.base02; - highlighted_border_color = sc.${accentColourName}; - text_color = sc.base05; - graph_color = sc.base04; - cursor_color = sc.base02; - selected_text_color = sc.base05; - selected_bg_color = sc.base01; - high_battery_color = sc.green; - medium_battery_color = sc.yellow; - low_battery_color = sc.red; - gpu_core_colors = rainbow; - arc_color = sc.cyan; - }; + colors = + let + sc = config.scheme.withHashtag; + rainbow = with sc; [ + red + yellow + green + cyan + blue + magenta + ]; + in + { + table_header_color = sc.base05; + all_cpu_color = sc.base05; + avg_cpu_color = sc.base05; + cpu_core_colors = rainbow; + ram_color = sc.red; + cache_color = sc.green; + swap_color = sc.blue; + rx_color = sc.green; + tx_color = sc.blue; + widget_title_color = sc.${accentColourName}; + border_color = sc.base02; + highlighted_border_color = sc.${accentColourName}; + text_color = sc.base05; + graph_color = sc.base04; + cursor_color = sc.base02; + selected_text_color = sc.base05; + selected_bg_color = sc.base01; + high_battery_color = sc.green; + medium_battery_color = sc.yellow; + low_battery_color = sc.red; + gpu_core_colors = rainbow; + arc_color = sc.cyan; + }; }; }; } diff --git a/home/shell/default.nix b/home/shell/default.nix index 55eb98c9..4079c032 100644 --- a/home/shell/default.nix +++ b/home/shell/default.nix @@ -1,4 +1,5 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ ./bottom.nix ./fastfetch.nix @@ -28,7 +29,7 @@ enable = true; git = true; icons = true; - extraOptions = ["--octal-permissions"]; + extraOptions = [ "--octal-permissions" ]; }; direnv = { enable = true; diff --git a/home/shell/fastfetch.nix b/home/shell/fastfetch.nix index f704a0dd..8429298b 100644 --- a/home/shell/fastfetch.nix +++ b/home/shell/fastfetch.nix @@ -1,6 +1,7 @@ -{...}: { +{ ... }: +{ programs.fastfetch = { enable = true; - settings = {}; + settings = { }; }; } diff --git a/home/shell/git.nix b/home/shell/git.nix index a5f53375..a462f258 100644 --- a/home/shell/git.nix +++ b/home/shell/git.nix @@ -3,45 +3,54 @@ lib, pkgs, ... -}: { +}: +{ services.git-sync.enable = false; # Can't find pass for some reason... - programs.git = let - package = pkgs.git.override { - withLibsecret = true; - withSsh = true; - }; - in { - inherit package; - enable = true; - userName = "Evie Litherland-Smith"; - userEmail = lib.mkDefault "evie@xenia.me.uk"; - delta = { + programs.git = + let + package = pkgs.git.override { + withLibsecret = true; + withSsh = true; + }; + in + { + inherit package; enable = true; - options = { - line-numbers = true; - hyprlinks = true; - navigate = true; - side-by-side = true; - syntax-theme = with config.programs; lib.mkIf bat.enable bat.config.theme; + userName = "Evie Litherland-Smith"; + userEmail = lib.mkDefault "evie@xenia.me.uk"; + delta = { + enable = true; + options = { + line-numbers = true; + hyprlinks = true; + navigate = true; + side-by-side = true; + syntax-theme = with config.programs; lib.mkIf bat.enable bat.config.theme; + }; }; + attributes = [ + "*.gpg filter=gpg diff=gpg" + "*.asc filter=gpg diff=gpg" + ]; + extraConfig = + let + user = "pixelifytica"; + in + { + github = { + inherit user; + }; + gitea = { + inherit user; + }; + pull.rebase = false; + init.defaultBranch = "main"; + merge.conflictstyle = "diff3"; + credential.helper = "${package}/bin/git-credential-libsecret"; + diff = { + colorMoved = "default"; + gpg.textconv = "gpg --no-tty --decrypt"; + }; + }; }; - attributes = [ - "*.gpg filter=gpg diff=gpg" - "*.asc filter=gpg diff=gpg" - ]; - extraConfig = let - user = "pixelifytica"; - in { - github = {inherit user;}; - gitea = {inherit user;}; - pull.rebase = false; - init.defaultBranch = "main"; - merge.conflictstyle = "diff3"; - credential.helper = "${package}/bin/git-credential-libsecret"; - diff = { - colorMoved = "default"; - gpg.textconv = "gpg --no-tty --decrypt"; - }; - }; - }; } diff --git a/home/shell/ssh.nix b/home/shell/ssh.nix index 5a63b079..19a35668 100644 --- a/home/shell/ssh.nix +++ b/home/shell/ssh.nix @@ -1,7 +1,7 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ home.packages = with pkgs; [ - (writeShellScriptBin "ssh-keygen-defaults" - ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'') + (writeShellScriptBin "ssh-keygen-defaults" ''ssh-keygen -t ed25519 -C "$(whoami)@$(hostname)"'') ]; programs.ssh = { enable = true; diff --git a/home/shell/starship.nix b/home/shell/starship.nix index f5175a48..29fa4fb3 100644 --- a/home/shell/starship.nix +++ b/home/shell/starship.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ programs.starship = { enable = true; enableTransience = false; @@ -15,17 +16,24 @@ fish_style_pwd_dir_length = 1; truncate_to_repo = false; }; - direnv = {disabled = false;}; + direnv = { + disabled = false; + }; git_branch = { only_attached = true; - ignore_branches = ["master" "main"]; + ignore_branches = [ + "master" + "main" + ]; }; git_commit = { format = "[ $hash | $tag]($style) "; tag_symbol = " "; tag_disabled = false; }; - git_metrics = {disabled = false;}; + git_metrics = { + disabled = false; + }; git_status = { stashed = " "; ahead = " "; @@ -44,10 +52,18 @@ ssh_only = false; ssh_symbol = "󰢹 "; }; - jobs = {symbol = "󰈏 ";}; - line_break = {disabled = false;}; - localip = {disabled = false;}; - memory_usage = {disabled = false;}; + jobs = { + symbol = "󰈏 "; + }; + line_break = { + disabled = false; + }; + localip = { + disabled = false; + }; + memory_usage = { + disabled = false; + }; os = { disabled = false; format = "on [$symbol]($style) "; @@ -69,7 +85,9 @@ map_symbol = true; pipestatus = true; }; - sudo = {disabled = false;}; + sudo = { + disabled = false; + }; }; }; } diff --git a/home/shell/zellij.nix b/home/shell/zellij.nix index bbdfe5eb..5c864e43 100644 --- a/home/shell/zellij.nix +++ b/home/shell/zellij.nix @@ -1,13 +1,18 @@ +{ config, lib, ... }: { - config, - lib, - ... -}: { programs.zellij = { enable = true; settings = { themes.base16 = with config.scheme.withHashtag; rec { - inherit red green yellow blue magenta cyan orange; + inherit + red + green + yellow + blue + magenta + cyan + orange + ; black = base00; bg = black; white = base05; diff --git a/home/shell/zsh.nix b/home/shell/zsh.nix index 3f9a83c6..640e9be8 100644 --- a/home/shell/zsh.nix +++ b/home/shell/zsh.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ programs.zsh = { enable = true; enableCompletion = true; @@ -7,7 +8,10 @@ defaultKeymap = "emacs"; syntaxHighlighting = { enable = true; - highlighters = ["brackets" "cursor"]; + highlighters = [ + "brackets" + "cursor" + ]; }; historySubstringSearch.enable = true; history = { diff --git a/home/streaming/default.nix b/home/streaming/default.nix index d5cc4ea2..5fb7e44a 100644 --- a/home/streaming/default.nix +++ b/home/streaming/default.nix @@ -1,10 +1,13 @@ -{pkgs, ...}: { - home.packages = with pkgs; - with kdePackages; [ - helvum - kdenlive - krita - ]; +{ pkgs, ... }: +{ + home.packages = + with pkgs; + with kdePackages; + [ + helvum + kdenlive + krita + ]; programs.obs-studio = { enable = true; plugins = with pkgs.obs-studio-plugins; [ diff --git a/home/work.nix b/home/work.nix index 8e4578af..dd39a7d4 100644 --- a/home/work.nix +++ b/home/work.nix @@ -3,8 +3,9 @@ lib, pkgs, ... -}: { - imports = [./default.nix]; +}: +{ + imports = [ ./default.nix ]; home.packages = with pkgs; [ twinkle (import ./scripts/ukaea-vpn.nix pkgs) diff --git a/system/Legion.nix b/system/Legion.nix index bf79d8ae..e765b26f 100644 --- a/system/Legion.nix +++ b/system/Legion.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./services/caddy.nix ./services/forgejo.nix diff --git a/system/Northstar.nix b/system/Northstar.nix index b433d6e4..56577ee6 100644 --- a/system/Northstar.nix +++ b/system/Northstar.nix @@ -1,4 +1,5 @@ -{...}: { +{ ... }: +{ imports = [ ./laptop.nix ./desktop/plasma.nix diff --git a/system/Scorch.nix b/system/Scorch.nix index 4fb32e16..bba0c7be 100644 --- a/system/Scorch.nix +++ b/system/Scorch.nix @@ -1,9 +1,12 @@ -{pkgs, ...}: { - imports = [./desktop/plasma.nix]; +{ pkgs, ... }: +{ + imports = [ ./desktop/plasma.nix ]; boot = { loader.efi.efiSysMountPoint = "/boot/efi"; initrd = { - secrets = {"/crypto_keyfile.bin" = null;}; + secrets = { + "/crypto_keyfile.bin" = null; + }; luks.devices."luks-47d34268-5100-4eba-b34d-220f4239c1cb" = { device = "/dev/disk/by-uuid/47d34268-5100-4eba-b34d-220f4239c1cb"; keyFile = "/crypto_keyfile.bin"; @@ -14,6 +17,9 @@ etc."ppp/options".text = '' ipcp-accept-remote ''; - systemPackages = with pkgs; [openfortivpn samba]; + systemPackages = with pkgs; [ + openfortivpn + samba + ]; }; } diff --git a/system/Tone.nix b/system/Tone.nix index 02504e20..c96fa292 100644 --- a/system/Tone.nix +++ b/system/Tone.nix @@ -1,10 +1,13 @@ -{pkgs, ...}: { +{ pkgs, ... }: +{ imports = [ ./laptop.nix ./desktop/plasma.nix ]; boot.initrd = { - secrets = {"/crypto_keyfile.bin" = null;}; + secrets = { + "/crypto_keyfile.bin" = null; + }; luks.devices."luks-761eeb11-3091-4142-9232-4fb33165eccd" = { device = "/dev/disk/by-uuid/761eeb11-3091-4142-9232-4fb33165eccd"; keyFile = "/crypto_keyfile.bin"; @@ -14,7 +17,7 @@ etc."ppp/options".text = '' ipcp-accept-remote ''; - systemPackages = with pkgs; [openfortivpn]; + systemPackages = with pkgs; [ openfortivpn ]; }; services = { samba.enable = true; diff --git a/system/Vanguard.nix b/system/Vanguard.nix index 62d7fcdd..b224ef5a 100644 --- a/system/Vanguard.nix +++ b/system/Vanguard.nix @@ -1,8 +1,9 @@ -{config, ...}: { - imports = [./desktop/plasma.nix]; +{ config, ... }: +{ + imports = [ ./desktop/plasma.nix ]; boot = { - initrd.kernelModules = ["amdgpu"]; - extraModulePackages = with config.boot.kernelPackages; [v4l2loopback]; + initrd.kernelModules = [ "amdgpu" ]; + extraModulePackages = with config.boot.kernelPackages; [ v4l2loopback ]; extraModprobeConfig = '' options v4l2loopback devices=1 video_nr=1 card_label="OBS Cam" exclusive_caps=1 ''; diff --git a/system/default.nix b/system/default.nix index 2721ea19..cdea3bd0 100644 --- a/system/default.nix +++ b/system/default.nix @@ -3,14 +3,18 @@ pkgs, iosevkaCustom, ... -}: { +}: +{ nix = { enable = true; settings = { cores = 0; max-jobs = "auto"; - trusted-users = ["root"]; - experimental-features = ["nix-command" "flakes"]; + trusted-users = [ "root" ]; + experimental-features = [ + "nix-command" + "flakes" + ]; auto-optimise-store = true; }; channel.enable = true; @@ -64,7 +68,7 @@ networking = { networkmanager.enable = true; firewall.enable = true; - nameservers = ["9.9.9.9"]; + nameservers = [ "9.9.9.9" ]; }; users.users.root.openssh.authorizedKeys.keys = [ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAINI1dWlS16Keil0MGPWmMsBzx8F9ylfz+fRwxUr8/tZ/ ion" @@ -72,7 +76,7 @@ "ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAICPypUUGVAdpl0SHrUDVw0RureuFNsljrXQvrf0uc055 pixelifytica@Northstar" ]; environment = { - pathsToLink = ["/share/zsh"]; + pathsToLink = [ "/share/zsh" ]; sessionVariables = { XDG_CONFIG_HOME = "$HOME/.config"; XDG_CACHE_HOME = "$HOME/.cache"; @@ -121,23 +125,25 @@ i18n.defaultLocale = "en_GB.UTF-8"; console.useXkbConfig = true; fonts = { - packages = with pkgs; - with iosevkaCustom.packages; [ - iosevka-custom-nerdfont - iosevka-custom-aile - emacs-all-the-icons-fonts # Emacs - weather-icons # Emacs - lmodern # LaTeX - noto-fonts-emoji # Emoji - (nerdfonts.override {fonts = ["NerdFontsSymbolsOnly"];}) - ]; + packages = + with pkgs; + with iosevkaCustom.packages; + [ + iosevka-custom-nerdfont + iosevka-custom-aile + emacs-all-the-icons-fonts # Emacs + weather-icons # Emacs + lmodern # LaTeX + noto-fonts-emoji # Emoji + (nerdfonts.override { fonts = [ "NerdFontsSymbolsOnly" ]; }) + ]; fontconfig = { enable = true; defaultFonts = with iosevkaCustom.names; { - serif = [iosevka-custom-aile]; - sansSerif = [iosevka-custom-aile]; - monospace = [iosevka-custom-nerdfont]; - emoji = ["Noto Color Emoji"]; + serif = [ iosevka-custom-aile ]; + sansSerif = [ iosevka-custom-aile ]; + monospace = [ iosevka-custom-nerdfont ]; + emoji = [ "Noto Color Emoji" ]; }; }; }; diff --git a/system/desktop/default.nix b/system/desktop/default.nix index dfd633a7..a288f465 100644 --- a/system/desktop/default.nix +++ b/system/desktop/default.nix @@ -3,7 +3,8 @@ lib, pkgs, ... -}: { +}: +{ nixpkgs.config.chromium.commandLineArgs = "--enable-features=UseOzonePlatform --ozone-platform=wayland"; system.autoUpgrade.operation = "boot"; hardware.bluetooth.enable = true; diff --git a/system/desktop/plasma.nix b/system/desktop/plasma.nix index 6acc6a53..f1048447 100644 --- a/system/desktop/plasma.nix +++ b/system/desktop/plasma.nix @@ -1,6 +1,7 @@ -{pkgs, ...}: { - imports = [./default.nix]; - environment.plasma6.excludePackages = with pkgs.kdePackages; [plasma-browser-integration]; +{ pkgs, ... }: +{ + imports = [ ./default.nix ]; + environment.plasma6.excludePackages = with pkgs.kdePackages; [ plasma-browser-integration ]; services = { displayManager.sddm = { enable = true; diff --git a/system/desktop/sway.nix b/system/desktop/sway.nix index 5c938ad6..44348235 100644 --- a/system/desktop/sway.nix +++ b/system/desktop/sway.nix @@ -1,9 +1,6 @@ +{ lib, pkgs, ... }: { - lib, - pkgs, - ... -}: { - imports = [./default.nix]; + imports = [ ./default.nix ]; environment = { sessionVariables.GRIM_DEFAULT_DIR = "$HOME/Pictures/Grim"; systemPackages = with pkgs; [ @@ -19,7 +16,7 @@ brightnessctl ]; }; - security.pam.services.swaylock = {}; + security.pam.services.swaylock = { }; programs = { light.enable = true; nm-applet.enable = true; @@ -33,16 +30,16 @@ }; sway = { enable = true; - package = - pkgs.swayfx.overrideAttrs - (old: {passthru.providedSessions = ["sway"];}); - extraPackages = []; + package = pkgs.swayfx.overrideAttrs (old: { + passthru.providedSessions = [ "sway" ]; + }); + extraPackages = [ ]; wrapperFeatures.gtk = true; xwayland.enable = true; }; }; services = { - dbus.packages = with pkgs; [gcr]; + dbus.packages = with pkgs; [ gcr ]; gnome.gnome-keyring.enable = true; blueman.enable = true; accounts-daemon.enable = true; @@ -54,12 +51,18 @@ }; greetd = { enable = true; - settings = let - command = "sway"; - in { - initial_session = {inherit command;}; - default_session = {inherit command;}; - }; + settings = + let + command = "sway"; + in + { + initial_session = { + inherit command; + }; + default_session = { + inherit command; + }; + }; }; }; qt = { @@ -70,6 +73,6 @@ xdg.portal = { enable = true; config.common.default = "*"; # TODO change for xdg-desktop-portal > 1.17 changes - extraPortals = [pkgs.xdg-desktop-portal-gtk]; + extraPortals = [ pkgs.xdg-desktop-portal-gtk ]; }; } diff --git a/system/hardware-configuration/Legion.nix b/system/hardware-configuration/Legion.nix index 6558c46f..860486e0 100644 --- a/system/hardware-configuration/Legion.nix +++ b/system/hardware-configuration/Legion.nix @@ -1,32 +1,44 @@ # 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, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "usb_storage" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/b9d4ba04-a867-4ca6-88f9-79dc6a982e94"; + fsType = "ext4"; + }; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/8F05-4C3A"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/a10ee1da-3b0d-4f6b-b20a-d6a32ae1f668"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/8F05-4C3A"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" ]; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/a10ee1da-3b0d-4f6b-b20a-d6a32ae1f668"; } ]; # 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 diff --git a/system/hardware-configuration/Northstar.nix b/system/hardware-configuration/Northstar.nix index 1c73cd98..2b46114e 100644 --- a/system/hardware-configuration/Northstar.nix +++ b/system/hardware-configuration/Northstar.nix @@ -1,34 +1,43 @@ # 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, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ + "nvme" + "xhci_pci" + "rtsx_pci_sdmmc" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/84b28760-3643-4ad8-9ff6-ff78b57067f8"; + fsType = "ext4"; + }; boot.initrd.luks.devices."luks-d1062931-ee58-4848-adf9-09452daeb6eb".device = "/dev/disk/by-uuid/d1062931-ee58-4848-adf9-09452daeb6eb"; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/ABE3-88E7"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/ba43345c-a652-497f-84d0-86064805446b"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/ABE3-88E7"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" ]; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/ba43345c-a652-497f-84d0-86064805446b"; } ]; # 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 diff --git a/system/hardware-configuration/Scorch.nix b/system/hardware-configuration/Scorch.nix index 49a4b082..ee32fc32 100644 --- a/system/hardware-configuration/Scorch.nix +++ b/system/hardware-configuration/Scorch.nix @@ -1,13 +1,24 @@ # Do not modify this file! It was generated by ‘nixos-generate-config’ # and may be overwritten by future invocations. Please make changes # to /etc/nixos/configuration.nix instead. -{ config, lib, pkgs, modulesPath, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = - [ "xhci_pci" "ahci" "usb_storage" "usbhid" "sd_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "usb_storage" + "usbhid" + "sd_mod" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; @@ -17,16 +28,14 @@ fsType = "ext4"; }; - boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = - "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d"; + boot.initrd.luks.devices."luks-08822b9c-e9d6-424c-bc75-373f8667526d".device = "/dev/disk/by-uuid/08822b9c-e9d6-424c-bc75-373f8667526d"; fileSystems."/boot/efi" = { device = "/dev/disk/by-uuid/6009-89FC"; fsType = "vfat"; }; - swapDevices = - [{ device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; }]; + swapDevices = [ { device = "/dev/disk/by-uuid/ff9627a7-820c-4628-a040-2b665688b893"; } ]; # 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 @@ -37,6 +46,5 @@ nixpkgs.hostPlatform = lib.mkDefault "x86_64-linux"; powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; - hardware.cpu.intel.updateMicrocode = - lib.mkDefault config.hardware.enableRedistributableFirmware; + hardware.cpu.intel.updateMicrocode = lib.mkDefault config.hardware.enableRedistributableFirmware; } diff --git a/system/hardware-configuration/Tone.nix b/system/hardware-configuration/Tone.nix index dd1ba100..14f1cd58 100644 --- a/system/hardware-configuration/Tone.nix +++ b/system/hardware-configuration/Tone.nix @@ -1,33 +1,44 @@ # 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, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "thunderbolt" "vmd" "nvme" "usbhid" "usb_storage" "sd_mod" "rtsx_pci_sdmmc" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "thunderbolt" + "vmd" + "nvme" + "usbhid" + "usb_storage" + "sd_mod" + "rtsx_pci_sdmmc" + ]; boot.initrd.kernelModules = [ ]; boot.kernelModules = [ "kvm-intel" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/44c11386-0af8-4954-93bc-963a8e071672"; + fsType = "ext4"; + }; boot.initrd.luks.devices."luks-bf1eab3a-6d92-430d-a282-8dd4c9efe2c7".device = "/dev/disk/by-uuid/bf1eab3a-6d92-430d-a282-8dd4c9efe2c7"; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/85D5-B6EC"; - fsType = "vfat"; - }; + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/85D5-B6EC"; + fsType = "vfat"; + }; - swapDevices = - [ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; } - ]; + swapDevices = [ { device = "/dev/disk/by-uuid/e65e5e4d-2084-4e6b-9255-3b36cba1529f"; } ]; # 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 diff --git a/system/hardware-configuration/Vanguard.nix b/system/hardware-configuration/Vanguard.nix index 91770e04..a4c4b705 100644 --- a/system/hardware-configuration/Vanguard.nix +++ b/system/hardware-configuration/Vanguard.nix @@ -1,39 +1,51 @@ # 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, ... }: +{ + config, + lib, + pkgs, + modulesPath, + ... +}: { - imports = - [ (modulesPath + "/installer/scan/not-detected.nix") - ]; + imports = [ (modulesPath + "/installer/scan/not-detected.nix") ]; - boot.initrd.availableKernelModules = [ "xhci_pci" "ahci" "nvme" "usbhid" "sd_mod" "sr_mod" ]; + boot.initrd.availableKernelModules = [ + "xhci_pci" + "ahci" + "nvme" + "usbhid" + "sd_mod" + "sr_mod" + ]; boot.initrd.kernelModules = [ "dm-snapshot" ]; boot.kernelModules = [ "kvm-amd" ]; boot.extraModulePackages = [ ]; - fileSystems."/" = - { device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73"; - fsType = "ext4"; - }; + fileSystems."/" = { + device = "/dev/disk/by-uuid/379a999a-0753-4cbf-b868-e275902f0f73"; + fsType = "ext4"; + }; boot.initrd.luks.devices."luks-0d50df5f-9456-4296-9156-f5b818e11552".device = "/dev/disk/by-uuid/0d50df5f-9456-4296-9156-f5b818e11552"; - fileSystems."/boot" = - { device = "/dev/disk/by-uuid/3297-A70D"; - fsType = "vfat"; - options = [ "fmask=0022" "dmask=0022" ]; - }; - - fileSystems."/mnt/secondary" = - { device = "/dev/disk/by-uuid/036f1fcb-0674-4ae5-a2fe-cb4f7ada001d"; - fsType = "ext4"; - }; - - swapDevices = - [ { device = "/dev/disk/by-uuid/26a8690a-70f9-4701-b224-b212f76a7035"; } + fileSystems."/boot" = { + device = "/dev/disk/by-uuid/3297-A70D"; + fsType = "vfat"; + options = [ + "fmask=0022" + "dmask=0022" ]; + }; + + fileSystems."/mnt/secondary" = { + device = "/dev/disk/by-uuid/036f1fcb-0674-4ae5-a2fe-cb4f7ada001d"; + fsType = "ext4"; + }; + + swapDevices = [ { device = "/dev/disk/by-uuid/26a8690a-70f9-4701-b224-b212f76a7035"; } ]; # 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 diff --git a/system/laptop.nix b/system/laptop.nix index 9f357577..c56fe686 100644 --- a/system/laptop.nix +++ b/system/laptop.nix @@ -1,5 +1,6 @@ -{...}: { - imports = [./desktop/default.nix]; +{ ... }: +{ + imports = [ ./desktop/default.nix ]; powerManagement.enable = true; services.auto-cpufreq = { enable = true; diff --git a/system/services/adguardhome.nix b/system/services/adguardhome.nix index 3e3d881e..4a07e42a 100644 --- a/system/services/adguardhome.nix +++ b/system/services/adguardhome.nix @@ -3,15 +3,22 @@ lib, pkgs, ... -}: { +}: +{ services.adguardhome = { enable = true; mutableSettings = false; settings = rec { http.address = "0.0.0.0:3200"; dns = { - bind_hosts = ["127.0.0.1" "192.168.1.230"]; - bootstrap_dns = ["9.9.9.9" "149.112.112.10"]; + bind_hosts = [ + "127.0.0.1" + "192.168.1.230" + ]; + bootstrap_dns = [ + "9.9.9.9" + "149.112.112.10" + ]; ratelimit = 0; safe_search.enabled = true; rewrites = [ @@ -24,20 +31,24 @@ answer = "192.168.1.230"; } ]; - blocked_services.ids = []; + blocked_services.ids = [ ]; + }; + filtering = { + inherit (dns) safe_search rewrites blocked_services; }; - filtering = {inherit (dns) safe_search rewrites blocked_services;}; querylog.ignored = [ "discovery.syncthing.net" "discovery-v6.syncthing.net" "matrix.tchncs.de" ]; - statistics = {inherit (querylog) ignored;}; + statistics = { + inherit (querylog) ignored; + }; }; openFirewall = true; }; networking.firewall = { - allowedTCPPorts = [53]; - allowedUDPPorts = [53]; + allowedTCPPorts = [ 53 ]; + allowedUDPPorts = [ 53 ]; }; } diff --git a/system/services/astroneer.nix b/system/services/astroneer.nix index 692c97b6..836dd0c1 100644 --- a/system/services/astroneer.nix +++ b/system/services/astroneer.nix @@ -1,5 +1,6 @@ -{pkgs, ...}: { - environment.systemPackages = with pkgs; [steamcmd]; - networking.firewall.allowedTCPPorts = [8777]; +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ steamcmd ]; + networking.firewall.allowedTCPPorts = [ 8777 ]; services.caddy.virtualHosts."astro.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:8777"; } diff --git a/system/services/caddy.nix b/system/services/caddy.nix index 07848895..be3179d6 100644 --- a/system/services/caddy.nix +++ b/system/services/caddy.nix @@ -1,10 +1,14 @@ -{...}: { - networking.firewall.allowedTCPPorts = [80 443]; +{ ... }: +{ + networking.firewall.allowedTCPPorts = [ + 80 + 443 + ]; services.caddy = { enable = true; email = "evie@xenia.me.uk"; virtualHosts."xenia.me.uk" = { - serverAliases = ["www.xenia.me.uk"]; + serverAliases = [ "www.xenia.me.uk" ]; extraConfig = '' file_server * { root /var/www/xenia.me.uk/ @@ -14,7 +18,13 @@ }; services.fail2ban = { enable = true; - ignoreIP = ["127.0.0.1/8" "::1" "192.168.1.0/16"]; - bantime-increment = {enable = true;}; + ignoreIP = [ + "127.0.0.1/8" + "::1" + "192.168.1.0/16" + ]; + bantime-increment = { + enable = true; + }; }; } diff --git a/system/services/forgejo.nix b/system/services/forgejo.nix index f9a46a86..3c868c4c 100644 --- a/system/services/forgejo.nix +++ b/system/services/forgejo.nix @@ -1,9 +1,6 @@ +{ config, pkgs, ... }: { - config, - pkgs, - ... -}: { - imports = [./caddy.nix]; + imports = [ ./caddy.nix ]; services = { forgejo = { enable = true; @@ -15,9 +12,15 @@ HTTP_PORT = 3100; DISABLE_SSH = true; }; - ui = {DEFAULT_THEME = "forgejo-auto";}; - admin = {DISABLE_REGULAR_ORG_CREATION = true;}; - service = {DISABLE_REGISTRATION = true;}; + ui = { + DEFAULT_THEME = "forgejo-auto"; + }; + admin = { + DISABLE_REGULAR_ORG_CREATION = true; + }; + service = { + DISABLE_REGISTRATION = true; + }; }; }; # gitea-actions-runner = { diff --git a/system/services/gitea.nix b/system/services/gitea.nix index ee7a84f9..5eb786f5 100644 --- a/system/services/gitea.nix +++ b/system/services/gitea.nix @@ -1,5 +1,6 @@ -{...}: { - imports = [./caddy.nix]; +{ ... }: +{ + imports = [ ./caddy.nix ]; services.gitea = { enable = true; settings = { diff --git a/system/services/grafana.nix b/system/services/grafana.nix index 74e4fa52..98b9ec39 100644 --- a/system/services/grafana.nix +++ b/system/services/grafana.nix @@ -1,5 +1,6 @@ -{...}: { - imports = [./caddy.nix]; +{ ... }: +{ + imports = [ ./caddy.nix ]; services.grafana = { enable = true; settings = { @@ -16,14 +17,14 @@ exporters = { node = { enable = true; - enabledCollectors = ["systemd"]; + enabledCollectors = [ "systemd" ]; port = 9002; }; }; scrapeConfigs = [ { job_name = "legion"; - static_configs = [{targets = ["127.0.0.1:${toString exporters.node.port}"];}]; + static_configs = [ { targets = [ "127.0.0.1:${toString exporters.node.port}" ]; } ]; } # { # job_name = "minecraft"; diff --git a/system/services/home-assistant.nix b/system/services/home-assistant.nix index 26c88ccc..9e182739 100644 --- a/system/services/home-assistant.nix +++ b/system/services/home-assistant.nix @@ -1,11 +1,15 @@ -{config, ...}: { +{ config, ... }: +{ virtualisation.oci-containers = { backend = "podman"; containers.homeassistant = { - volumes = ["home-assistant:/config" "/run/dbus:/run/dbus:ro"]; + volumes = [ + "home-assistant:/config" + "/run/dbus:/run/dbus:ro" + ]; environment.TZ = config.time.timeZone; image = "ghcr.io/home-assistant/home-assistant:2024.8.0.dev202407210221"; - extraOptions = ["--network=host"]; + extraOptions = [ "--network=host" ]; }; }; services.caddy.virtualHosts."home.xenia.me.uk".extraConfig = "reverse_proxy http://localhost:8123"; diff --git a/system/services/matrix-synapse.nix b/system/services/matrix-synapse.nix index c310cfad..18775fb2 100644 --- a/system/services/matrix-synapse.nix +++ b/system/services/matrix-synapse.nix @@ -1,8 +1,10 @@ -{...}: let +{ ... }: +let baseUrl = "xenia.me.uk"; port = 8008; -in { - imports = [./caddy.nix]; +in +{ + imports = [ ./caddy.nix ]; services = { matrix-synapse = { enable = true; @@ -12,20 +14,26 @@ in { listeners = [ { inherit port; - bind_addresses = ["127.0.0.1" "::1"]; + bind_addresses = [ + "127.0.0.1" + "::1" + ]; type = "http"; tls = false; x_forwarded = true; resources = [ { - names = ["client" "federation"]; + names = [ + "client" + "federation" + ]; compress = true; } ]; } ]; }; - extraConfigFiles = ["/run/secrets/matrix-shared-secret"]; + extraConfigFiles = [ "/run/secrets/matrix-shared-secret" ]; }; caddy.virtualHosts."xenia.me.uk".extraConfig = '' header /.well-known/matrix/* Content-Type application/json diff --git a/system/services/minecraft.nix b/system/services/minecraft.nix index 68a7d0a1..a37e9b4d 100644 --- a/system/services/minecraft.nix +++ b/system/services/minecraft.nix @@ -1,18 +1,19 @@ +{ config, pkgs, ... }: { - config, - pkgs, - ... -}: { nixpkgs.overlays = [ # Fetch papermc v1.21 from unstable branch of nixpkgs - (final: prev: let - pinnedPkgs = import (builtins.fetchTarball { - url = "https://github.com/NixOS/nixpkgs/archive/03a94c776f261b78b95de0971a94dea0199b4cd8.tar.gz"; - sha256 = "0vngf4g468qd5fqch85nzyvn7bpa6p2i6rdmzc6ws2653x868w3g"; - }) {inherit (pkgs) system;}; - in { - inherit (pinnedPkgs) papermc papermcServers; - }) + ( + final: prev: + let + pinnedPkgs = import (builtins.fetchTarball { + url = "https://github.com/NixOS/nixpkgs/archive/03a94c776f261b78b95de0971a94dea0199b4cd8.tar.gz"; + sha256 = "0vngf4g468qd5fqch85nzyvn7bpa6p2i6rdmzc6ws2653x868w3g"; + }) { inherit (pkgs) system; }; + in + { + inherit (pinnedPkgs) papermc papermcServers; + } + ) ]; services.minecraft-server = { enable = true; diff --git a/system/services/navidrome.nix b/system/services/navidrome.nix index aec75ae7..db334a88 100644 --- a/system/services/navidrome.nix +++ b/system/services/navidrome.nix @@ -1,6 +1,7 @@ -{pkgs, ...}: { - imports = [./caddy.nix]; - environment.systemPackages = with pkgs; [ffmpeg]; +{ pkgs, ... }: +{ + imports = [ ./caddy.nix ]; + environment.systemPackages = with pkgs; [ ffmpeg ]; services = { navidrome = { enable = true; diff --git a/system/services/nix-serve.nix b/system/services/nix-serve.nix index ff99abe1..5ba93de5 100644 --- a/system/services/nix-serve.nix +++ b/system/services/nix-serve.nix @@ -1,5 +1,6 @@ -{config, ...}: { - imports = [./caddy.nix]; +{ config, ... }: +{ + imports = [ ./caddy.nix ]; services.nix-serve = { enable = true; openFirewall = true; diff --git a/system/services/ntfy-sh.nix b/system/services/ntfy-sh.nix index 054a95c0..02ce1c7c 100644 --- a/system/services/ntfy-sh.nix +++ b/system/services/ntfy-sh.nix @@ -1,5 +1,6 @@ -{...}: { - imports = [./caddy.nix]; +{ ... }: +{ + imports = [ ./caddy.nix ]; services.ntfy-sh = { enable = true; settings = { diff --git a/system/services/owncast.nix b/system/services/owncast.nix index 86d30e52..924d9ac5 100644 --- a/system/services/owncast.nix +++ b/system/services/owncast.nix @@ -1,5 +1,6 @@ -{config, ...}: { - imports = [./caddy.nix]; +{ config, ... }: +{ + imports = [ ./caddy.nix ]; services.owncast = { enable = true; port = 9090; diff --git a/system/services/radicale.nix b/system/services/radicale.nix index f3763efb..028a0389 100644 --- a/system/services/radicale.nix +++ b/system/services/radicale.nix @@ -1,11 +1,13 @@ -{...}: let +{ ... }: +let port = "5232"; -in { +in +{ services.radicale = { enable = true; settings = { server = { - hosts = ["0.0.0.0:${port}"]; + hosts = [ "0.0.0.0:${port}" ]; }; auth = { type = "htpasswd"; diff --git a/system/services/sshd.nix b/system/services/sshd.nix index f430871e..b98c0a00 100644 --- a/system/services/sshd.nix +++ b/system/services/sshd.nix @@ -1,7 +1,8 @@ -{...}: { +{ ... }: +{ services.openssh = { enable = true; - ports = [22]; + ports = [ 22 ]; settings = { UseDns = true; PermitRootLogin = "no"; diff --git a/system/services/syncthing.nix b/system/services/syncthing.nix index 363f497c..f0ea26f5 100644 --- a/system/services/syncthing.nix +++ b/system/services/syncthing.nix @@ -1,7 +1,14 @@ -{...}: let - devices = ["Ion" "Legion" "Northstar" "Vanguard"]; -in { - imports = [./caddy.nix]; +{ ... }: +let + devices = [ + "Ion" + "Legion" + "Northstar" + "Vanguard" + ]; +in +{ + imports = [ ./caddy.nix ]; services.syncthing = { enable = true; systemService = true; diff --git a/system/services/terraria/windy_limbo_of_melancholy.nix b/system/services/terraria/windy_limbo_of_melancholy.nix index d8282f2e..e79ff2f6 100644 --- a/system/services/terraria/windy_limbo_of_melancholy.nix +++ b/system/services/terraria/windy_limbo_of_melancholy.nix @@ -1,5 +1,6 @@ -{pkgs, ...}: { - environment.systemPackages = with pkgs; [tmux]; +{ pkgs, ... }: +{ + environment.systemPackages = with pkgs; [ tmux ]; services.terraria = { enable = true; maxPlayers = 10; diff --git a/system/services/znc.nix b/system/services/znc.nix index f12eda02..a299a123 100644 --- a/system/services/znc.nix +++ b/system/services/znc.nix @@ -1,12 +1,15 @@ -{...}: { +{ ... }: +{ services.znc = { enable = true; mutable = false; useLegacyConfig = false; openFirewall = true; config = { - LoadModule = ["adminlog"]; - Listener.l = {Port = 6697;}; + LoadModule = [ "adminlog" ]; + Listener.l = { + Port = 6697; + }; User.pixelifytica = { Admin = true; Pass.password = { @@ -18,7 +21,7 @@ liberachat = { Server = "irc.libera.chat +6697"; Nick = "pixelifytica"; - Chan = {}; + Chan = { }; JoinDelay = 2; }; };