From d1466bbba38c99180608ce1b164e71677bb64d0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Thu, 26 Jan 2023 10:54:34 +0100 Subject: [PATCH 1/9] add miracast module --- modules/programs/default.nix | 3 ++- modules/programs/miracast.nix | 23 +++++++++++++++++++++++ 2 files changed, 25 insertions(+), 1 deletion(-) create mode 100644 modules/programs/miracast.nix diff --git a/modules/programs/default.nix b/modules/programs/default.nix index abc4c23..d7e92ff 100644 --- a/modules/programs/default.nix +++ b/modules/programs/default.nix @@ -18,10 +18,12 @@ ./gpg.nix ./helix.nix ./hub.nix + ./hyprland ./kakoune.nix ./kitty.nix ./ledger ./logseq.nix + ./miracast.nix ./python.nix ./rofi ./spotify.nix @@ -32,6 +34,5 @@ ./xmonad ./zathura.nix ./zsh.nix - ./hyprland ]; } diff --git a/modules/programs/miracast.nix b/modules/programs/miracast.nix new file mode 100644 index 0000000..6181a88 --- /dev/null +++ b/modules/programs/miracast.nix @@ -0,0 +1,23 @@ +{ config +, lib +, pkgs +, ... +}: + +with lib; +let + cfg = config.my.programs.miracast; +in +{ + options.my.programs.miracast.enable = mkEnableOption "miracast"; + + config = mkIf cfg.enable { + networking.firewall = { + allowedTCPPorts = [ 7236 7250 ]; + allowedUDPPorts = [ 7236 5353 ]; + }; + users.users.moritz.packages = with pkgs; [ + gnome-network-displays + ]; + }; +} From eb101fbcf2d91ab14d310abc380cc1a00175335b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Thu, 26 Jan 2023 10:55:27 +0100 Subject: [PATCH 2/9] small improvements --- modules/profiles/desktop.nix | 2 -- modules/programs/hyprland/config.nix | 2 ++ modules/programs/hyprland/default.nix | 17 +++++++++++------ 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index cc97e51..687fd40 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -76,11 +76,9 @@ with lib; { git.signing = true; gpg.enable = true; hub.enable = true; - kitty.enable = true; ledger.enable = true; logseq.enable = true; python.enable = true; - rofi.enable = true; ssh = { enable = true; includeSecrets = [ ../../secrets/ssh-home.age ]; diff --git a/modules/programs/hyprland/config.nix b/modules/programs/hyprland/config.nix index 0ffe5d1..2a0d355 100644 --- a/modules/programs/hyprland/config.nix +++ b/modules/programs/hyprland/config.nix @@ -127,6 +127,8 @@ in # Fullscreen Applications # ${mkRules ["opaque" "noblur" "noborder" "noshadow" "forceinput"] ["fullscreen:1"]} + ${mkRules ["opaque" "noblur" "noshadow"] ["class:^jetbrains-pycharm$"]} + # See https://wiki.hyprland.org/Configuring/Keywords/ for more $mainMod = SUPER $windowMod = ALT diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index f869398..f8c9d8d 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -18,6 +18,14 @@ in }; config = mkIf cfg.enable { + my = { + programs = { + kitty.enable = true; + rofi.enable = true; + }; + services.dunst.enable = true; + }; + home-manager.users.moritz = { imports = [ inputs.hyprland.homeManagerModules.default ]; @@ -33,11 +41,6 @@ in layer = "top"; position = "top"; height = 30; - output = [ - "eDP-1" - "HDMI-A-1" - "HDMI-A-2" - ]; modules-left = [ "wlr/workspaces" ]; modules-center = [ "hyprland/window" ]; modules-right = [ "network" "memory" "cpu" "battery" "clock" ]; @@ -110,7 +113,10 @@ in playerctl brightnessctl grimblast + slurp + grim wl-clipboard + wdisplays ]; security.pam.services.swaylock = { }; @@ -134,7 +140,6 @@ in (if cfg.nvidiaSupport then { LIBVA_DRIVER_NAME = "nvidia"; - XDG_SESSION_TYPE = "wayland"; GBM_BACKEND = "nvidia-drm"; __GLX_VENDOR_LIBRARY_NAME = "nvidia"; WLR_NO_HARDWARE_CURSORS = "1"; From c78d9e9e24f57cb45100516d2e4ace1c42dce36b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Thu, 26 Jan 2023 10:55:47 +0100 Subject: [PATCH 3/9] rework python module --- modules/profiles/desktop.nix | 2 +- modules/programs/python.nix | 66 ++++++++++++++++++++++-------------- 2 files changed, 41 insertions(+), 27 deletions(-) diff --git a/modules/profiles/desktop.nix b/modules/profiles/desktop.nix index 687fd40..ffdd4e6 100644 --- a/modules/profiles/desktop.nix +++ b/modules/profiles/desktop.nix @@ -78,7 +78,7 @@ with lib; { hub.enable = true; ledger.enable = true; logseq.enable = true; - python.enable = true; + python.versions."311".enable = true; ssh = { enable = true; includeSecrets = [ ../../secrets/ssh-home.age ]; diff --git a/modules/programs/python.nix b/modules/programs/python.nix index f0dadfb..adecd55 100644 --- a/modules/programs/python.nix +++ b/modules/programs/python.nix @@ -8,41 +8,55 @@ with lib; let cfg = config.my.programs.python; - mkPython = packages: version: pkgs.${version}.withPackages (ps: map (flip getAttr ps) packages); + pythonVersions = map (version: "3${toString version}") (range 8 11); + enabledVersions = filterAttrs (name: value: value.enable) cfg.versions; - pythonVersions = [ - "python311" - "python310" - "python39" - "python38" - ]; + pythonPackages = version: attrNames pkgs."python${version}Packages"; - packageLists = map (version: attrNames pkgs."${version}Packages") cfg.versions; + commonPackages = + let + packageLists = map pythonPackages (attrNames enabledVersions); + in + foldl' intersectLists (head packageLists) (tail packageLists); - commonPackages = foldl' intersectLists (head packageLists) (tail packageLists); + versionOpts = version: { + enable = mkEnableOption (toString version); + pythonPackages = mkOption { + default = [ ]; + type = with types; listOf (enum (pythonPackages version)); + }; + }; in { options.my.programs.python = { - enable = mkEnableOption "python"; - versions = mkOption { - default = [ "python310" ]; - type = with types; nonEmptyListOf (enum pythonVersions); - example = [ "python39" ]; - }; - packages = mkOption { - default = [ - "flake8" - "isort" - "mypy" - "poetry" - "pytest" - "python-lsp-server" - ]; + versions = genAttrs pythonVersions versionOpts; + defaultPackages = mkOption { + default = [ ]; type = with types; listOf (enum commonPackages); }; + extraPackages = mkOption { + default = with pkgs; [ + poetry + ruff + python310Packages.python-lsp-server + ]; + type = with types; listOf package; + }; }; - config = mkIf cfg.enable { - users.users.moritz.packages = map (mkPython cfg.packages) cfg.versions; + config = { + users.users.moritz.packages = + ( + let + mkPython = version: + let + package = pkgs."python${version}"; + finalPythonPackages = cfg.versions.${version}.pythonPackages ++ cfg.defaultPackages; + getPythonPackages = ps: map (flip getAttr ps) finalPythonPackages; + in + package.withPackages getPythonPackages; + in + map mkPython (attrNames enabledVersions) + ) ++ cfg.extraPackages; }; } From 9f89c0d9a18057dcdac12f84517e3792a8993c68 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Thu, 26 Jan 2023 10:57:16 +0100 Subject: [PATCH 4/9] add podman settings --- modules/virtualisation/podman.nix | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/virtualisation/podman.nix b/modules/virtualisation/podman.nix index f3fdf35..1698fe3 100644 --- a/modules/virtualisation/podman.nix +++ b/modules/virtualisation/podman.nix @@ -15,6 +15,7 @@ in virtualisation.podman = { enable = true; dockerCompat = true; + defaultNetwork.settings.dns_enabled = true; }; }; } From 5af6008c7d4e7f59c8d98b83730a123f4fd9eb9c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sun, 26 Feb 2023 12:50:06 +0100 Subject: [PATCH 5/9] theming: [FIX] evaluation error when not enabling theme option --- modules/config/theming/catppuccin-frappe.nix | 2 +- modules/config/theming/catppuccin-latte.nix | 2 +- modules/config/theming/catppuccin-macchiato.nix | 2 +- modules/config/theming/catppuccin-mocha.nix | 2 +- modules/config/theming/dracula.nix | 2 +- modules/programs/bspwm/default.nix | 2 +- 6 files changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/config/theming/catppuccin-frappe.nix b/modules/config/theming/catppuccin-frappe.nix index b7d8169..8be760f 100644 --- a/modules/config/theming/catppuccin-frappe.nix +++ b/modules/config/theming/catppuccin-frappe.nix @@ -5,7 +5,7 @@ let cfg = config.my.theming; in { - config = mkIf (cfg.scheme == "catppuccin-frappe") + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-frappe") (import ./catppuccin.nix { inherit config lib pkgs; diff --git a/modules/config/theming/catppuccin-latte.nix b/modules/config/theming/catppuccin-latte.nix index 6743ed9..3cf64d8 100644 --- a/modules/config/theming/catppuccin-latte.nix +++ b/modules/config/theming/catppuccin-latte.nix @@ -5,7 +5,7 @@ let cfg = config.my.theming; in { - config = mkIf (cfg.scheme == "catppuccin-latte") + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-latte") (import ./catppuccin.nix { inherit config lib pkgs; diff --git a/modules/config/theming/catppuccin-macchiato.nix b/modules/config/theming/catppuccin-macchiato.nix index 70b4dd8..f4f02f6 100644 --- a/modules/config/theming/catppuccin-macchiato.nix +++ b/modules/config/theming/catppuccin-macchiato.nix @@ -5,7 +5,7 @@ let cfg = config.my.theming; in { - config = mkIf (cfg.scheme == "catppuccin-macchiato") + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-macchiato") (import ./catppuccin.nix { inherit config lib pkgs; diff --git a/modules/config/theming/catppuccin-mocha.nix b/modules/config/theming/catppuccin-mocha.nix index ab35068..6b39aa6 100644 --- a/modules/config/theming/catppuccin-mocha.nix +++ b/modules/config/theming/catppuccin-mocha.nix @@ -5,7 +5,7 @@ let cfg = config.my.theming; in { - config = mkIf (cfg.scheme == "catppuccin-mocha") + config = mkIf (cfg.enable && cfg.scheme == "catppuccin-mocha") (import ./catppuccin.nix { inherit config lib pkgs; diff --git a/modules/config/theming/dracula.nix b/modules/config/theming/dracula.nix index 235e0c3..22ef8e6 100644 --- a/modules/config/theming/dracula.nix +++ b/modules/config/theming/dracula.nix @@ -17,7 +17,7 @@ let yellow = "#f1fa8c"; in { - config = mkIf (cfg.scheme == "dracula") { + config = mkIf (cfg.enable && cfg.scheme == "dracula") { home-manager.users.moritz = { programs = { kitty.extraConfig = diff --git a/modules/programs/bspwm/default.nix b/modules/programs/bspwm/default.nix index 78c64a6..ba50a96 100644 --- a/modules/programs/bspwm/default.nix +++ b/modules/programs/bspwm/default.nix @@ -37,7 +37,7 @@ in "feh".state = "floating"; "Vampire_Survivors".state = "fullscreen"; }; - settings = with config.scheme.withHashtag; { + settings = { border_width = 2; window_gap = 5; borderless_monocle = true; From 7d5ffb31f3757ab76dbcc9fe07a1601f9a37972b Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Sun, 26 Feb 2023 13:33:13 +0100 Subject: [PATCH 6/9] hyprland: add wdisplays package --- modules/programs/hyprland/default.nix | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/modules/programs/hyprland/default.nix b/modules/programs/hyprland/default.nix index c1a7c9b..62f4660 100644 --- a/modules/programs/hyprland/default.nix +++ b/modules/programs/hyprland/default.nix @@ -154,11 +154,12 @@ in # add user packages for wayland and hyprland in particular users.users.moritz.packages = with pkgs; [ - pamixer # pulse audio cli - playerctl # control media playback brightnessctl # control brightness grimblast # screenshot tool for hyprland + pamixer # pulse audio cli + playerctl # control media playback slurp # region select for wayland (for screensharing) + wdisplays # manage monitors wl-clipboard # clipboard tool for wayland ]; From 44b84c849d5a68275b9d2cbc3b5e6a654611c5da Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:02:37 +0100 Subject: [PATCH 7/9] nvim: add unstable version of copilot lua --- flake.lock | 17 +++++++++++++++++ flake.nix | 5 +++++ modules/programs/nvim/default.nix | 20 -------------------- overlays/default.nix | 30 +++++++++++++++++++++++++++++- 4 files changed, 51 insertions(+), 21 deletions(-) diff --git a/flake.lock b/flake.lock index d2414ef..18b52d9 100644 --- a/flake.lock +++ b/flake.lock @@ -82,6 +82,22 @@ "type": "github" } }, + "copilot-lua": { + "flake": false, + "locked": { + "lastModified": 1677479736, + "narHash": "sha256-n/SCrzzzL5WUHJk0sCXbgGusk/dQuy8DI9Pqdh+lVeQ=", + "owner": "zbirenbaum", + "repo": "copilot.lua", + "rev": "b41d4c9c7d4f5e0272bcf94061b88e244904c56f", + "type": "github" + }, + "original": { + "owner": "zbirenbaum", + "repo": "copilot.lua", + "type": "github" + } + }, "crane": { "inputs": { "flake-compat": [ @@ -813,6 +829,7 @@ "arkenfox-userjs": "arkenfox-userjs", "asus-touchpad-numpad-driver": "asus-touchpad-numpad-driver", "attic": "attic", + "copilot-lua": "copilot-lua", "emacs": "emacs", "flake-utils": "flake-utils_3", "forgit-git": "forgit-git", diff --git a/flake.nix b/flake.nix index 28c83f1..6a8b7d5 100644 --- a/flake.nix +++ b/flake.nix @@ -83,6 +83,11 @@ inputs.nixpkgs-stable.follows = "stable"; inputs.flake-utils.follows = "flake-utils"; }; + + copilot-lua = { + url = "github:zbirenbaum/copilot.lua"; + flake = false; + }; }; outputs = diff --git a/modules/programs/nvim/default.nix b/modules/programs/nvim/default.nix index 1d29b71..e7888e4 100644 --- a/modules/programs/nvim/default.nix +++ b/modules/programs/nvim/default.nix @@ -8,26 +8,6 @@ with lib; let cfg = config.my.programs.vim; - - mkDate = longDate: (lib.concatStringsSep "-" [ - (builtins.substring 0 4 longDate) - (builtins.substring 4 2 longDate) - (builtins.substring 6 2 longDate) - ]); - - mkVersionInput = input: mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); - - nvim-treesitter-textsubjects = pkgs.vimUtils.buildVimPluginFrom2Nix { - pname = "nvim-treesitter-textsubjects"; - version = mkVersionInput inputs.nvim-treesitter-textsubjects; - src = inputs.nvim-treesitter-textsubjects; - }; - - smartcolumn-nvim = pkgs.vimUtils.buildVimPluginFrom2Nix { - pname = "smartcolumn-nvim"; - version = mkVersionInput inputs.smartcolumn-nvim; - src = inputs.smartcolumn-nvim; - }; in { options.my.programs.vim = { diff --git a/overlays/default.nix b/overlays/default.nix index ae2256c..960d029 100644 --- a/overlays/default.nix +++ b/overlays/default.nix @@ -1,4 +1,13 @@ -{ inputs }: final: prev: { +{ inputs }: final: prev: +let + mkDate = longDate: (prev.lib.concatStringsSep "-" [ + (builtins.substring 0 4 longDate) + (builtins.substring 4 2 longDate) + (builtins.substring 6 2 longDate) + ]); + mkVersionInput = input: "unstable" + mkDate (input.lastModifiedDate or "19700101") + "_" + (input.shortRev or "dirty"); +in +{ agenix = inputs.agenix.packages.${prev.system}.default; attic = inputs.attic.packages.${prev.system}.default; hyprpaper = inputs.hyprpaper.packages.${prev.system}.default; @@ -23,6 +32,25 @@ mesonFlags = old.mesonFlags or [ ] ++ [ "-Dexperimental=true" ]; }); + vimPlugins = prev.vimPlugins // { + nvim-treesitter-textsubjects = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "nvim-treesitter-textsubjects"; + version = mkVersionInput inputs.nvim-treesitter-textsubjects; + src = inputs.nvim-treesitter-textsubjects; + }; + + smartcolumn-nvim = prev.vimUtils.buildVimPluginFrom2Nix { + pname = "smartcolumn-nvim"; + version = mkVersionInput inputs.smartcolumn-nvim; + src = inputs.smartcolumn-nvim; + }; + + copilot-lua = prev.vimPlugins.copilot-lua.overrideAttrs (old: { + version = mkVersionInput inputs.copilot-lua; + src = inputs.copilot-lua; + }); + }; + master = import inputs.master { inherit (prev) system; config.allowUnfree = true; From 38f175b845321d915a872fa8ee1da712f6e14862 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:03:17 +0100 Subject: [PATCH 8/9] nvim: disable copilot lua on startup --- modules/programs/nvim/init.lua | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index 078cbd2..fb68663 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -434,6 +434,10 @@ require("copilot").setup({ suggestion = { enabled = false }, panel = { enabled = false }, }) +vim.api.nvim_create_autocmd("VimEnter", { + desc = "Disable Copilot by default on startup", + command = "Copilot disable", +}) require("copilot_cmp").setup() local orgmode = require("orgmode") From 55ccb1d06c3c95d64e418b309038a1203b032c33 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Moritz=20B=C3=B6hme?= Date: Mon, 27 Feb 2023 23:04:23 +0100 Subject: [PATCH 9/9] nvim: add ruff lsp --- modules/programs/nvim/init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/programs/nvim/init.lua b/modules/programs/nvim/init.lua index fb68663..042b6aa 100644 --- a/modules/programs/nvim/init.lua +++ b/modules/programs/nvim/init.lua @@ -323,7 +323,7 @@ local function lspconfig_setup(lsp, options) lspconfig[lsp].setup(final_options) end -local servers = { "nil_ls", "pylsp", "rust_analyzer" } +local servers = { "nil_ls", "pylsp", "rust_analyzer", "ruff_lsp" } for _, lsp in ipairs(servers) do lspconfig_setup(lsp, {}) end