From 3f39ace8572699e9b7682a16c690da8a6dabecf7 Mon Sep 17 00:00:00 2001 From: Andrea Ciceri Date: Mon, 11 Oct 2021 23:58:20 +0200 Subject: [PATCH] Now Emacs works on the Macbook --- flake.nix | 235 ++++++++++++++-------------- hosts/mbp/configuration.nix | 6 +- hosts/mbp/default.nix | 2 +- pkgs/default.nix | 6 +- pkgs/ungoogled-chromium/default.nix | 10 ++ pkgs/vscodium/default.nix | 10 ++ profiles/chromecast/default.nix | 7 + users/andreaciceri/default.nix | 6 +- users/profiles/emacs/default.nix | 3 +- 9 files changed, 158 insertions(+), 127 deletions(-) create mode 100644 pkgs/ungoogled-chromium/default.nix create mode 100644 pkgs/vscodium/default.nix create mode 100644 profiles/chromecast/default.nix diff --git a/flake.nix b/flake.nix index 986ff2a..5a2d3e9 100644 --- a/flake.nix +++ b/flake.nix @@ -63,132 +63,133 @@ , ... } @ inputs: - digga.lib.mkFlake - { - inherit self inputs; + digga.lib.mkFlake + { + inherit self inputs; - channelsConfig = { allowUnfree = true; }; + channelsConfig = { allowUnfree = true; }; - channels = - let - commonOverlays = [ - digga.overlays.patchedNix - nur.overlay - emacs-overlay.overlay - nvfetcher.overlay - deploy.overlay - nixpkgs-wayland.overlay - ./pkgs/default.nix - ]; - in - { - stable = { - imports = [ (digga.lib.importOverlays ./overlays) ]; - overlays = commonOverlays; - }; - unstable = { - imports = [ (digga.lib.importOverlays ./overlays) ]; - overlays = commonOverlays; - }; - }; - - lib = import ./lib { lib = digga.lib // nixos.lib; }; - - sharedOverlays = [ - ( - final: prev: { - __dontExport = true; - lib = prev.lib.extend ( - lfinal: lprev: { - our = self.lib; - } - ); - } - ) - ]; - - nixos = { - hostDefaults = { - channelName = "unstable"; - imports = [ (digga.lib.importModules ./modules) ]; - externalModules = [ - { lib.our = self.lib; } - digga.nixosModules.bootstrapIso - digga.nixosModules.nixConfig - home.nixosModules.home-manager - bud.nixosModules.bud - ]; + channels = + let + commonOverlays = [ + digga.overlays.patchedNix + nur.overlay + emacs-overlay.overlay + nvfetcher.overlay + deploy.overlay + nixpkgs-wayland.overlay + ./pkgs/default.nix + ]; + in + { + stable = { + imports = [ (digga.lib.importOverlays ./overlays) ]; + overlays = commonOverlays; }; - hosts = { - # mbp is added bypassing Digga's mkFlake and adding a specific output to this flake - pc = { - system = "x86_64-linux"; - imports = [ { modules = ./hosts/pc; } ]; - }; - pbp = { - system = "aarch64-linux"; - imports = [ { modules = ./hosts/pbp; } ]; - modules = [ - "${pinebook-pro}/pinebook_pro.nix" - ]; - }; + unstable = { + imports = [ (digga.lib.importOverlays ./overlays) ]; + overlays = commonOverlays; }; - # imports = [ (digga.lib.importHosts ./hosts) ]; # same reason as above - importables = rec { - profiles = digga.lib.rakeLeaves ./profiles // { - users = digga.lib.rakeLeaves ./users; - }; - suites = with profiles; rec { - base = [ core users.ccr users.root ]; - }; - pbpKernelLatest = ( - import pinebook-pro-kernel-latest { - system = "aarch64-linux"; - overlays = [ - (import "${pinebook-pro}/overlay.nix") - ]; - config.allowUnfree = true; + }; + + lib = import ./lib { lib = digga.lib // nixos.lib; }; + + sharedOverlays = [ + ( + final: prev: { + __dontExport = true; + lib = prev.lib.extend ( + lfinal: lprev: { + our = self.lib; } - ).pkgs.linuxPackages_pinebookpro_latest; + ); + } + ) + ]; + + nixos = { + hostDefaults = { + channelName = "unstable"; + imports = [ (digga.lib.importModules ./modules) ]; + externalModules = [ + { lib.our = self.lib; } + digga.nixosModules.bootstrapIso + digga.nixosModules.nixConfig + home.nixosModules.home-manager + bud.nixosModules.bud + ]; + }; + hosts = { + # mbp is added bypassing Digga's mkFlake and adding a specific output to this flake + pc = { + system = "x86_64-linux"; + imports = [{ modules = ./hosts/pc; }]; + }; + pbp = { + system = "aarch64-linux"; + imports = [{ modules = ./hosts/pbp; }]; + modules = [ + "${pinebook-pro}/pinebook_pro.nix" + ]; }; }; - - home = { - imports = [ (digga.lib.importModules ./users/modules) ]; - externalModules = []; - importables = rec { - profiles = digga.lib.rakeLeaves ./users/profiles; - suites = with profiles; rec { - base = [ direnv git zsh gpg password-store ]; - shell = [ zsh exa fzf ]; - gui = [ sway xdg gtk foot bat ]; - browser = [ firefox chromium qutebrowser ]; - multimedia = [ mpv zathura ]; - dev = [ vim emacs vscode lorri direnv ]; - }; + # imports = [ (digga.lib.importHosts ./hosts) ]; # same reason as above + importables = rec { + profiles = digga.lib.rakeLeaves ./profiles // { + users = digga.lib.rakeLeaves ./users; }; + suites = with profiles; rec { + base = [ core users.ccr users.root ]; + }; + pbpKernelLatest = ( + import pinebook-pro-kernel-latest { + system = "aarch64-linux"; + overlays = [ + (import "${pinebook-pro}/overlay.nix") + ]; + config.allowUnfree = true; + } + ).pkgs.linuxPackages_pinebookpro_latest; }; - - devshell = ./shell; - - homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; - - deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations {}; - - defaultTemplate = self.templates.bud; - templates.bud.path = ./.; - templates.bud.description = "bud template"; - - } - // { - budModules = { devos = import ./bud; }; - # checks.aarch64-linux = { }; # this line will be uncommented by Github Action in order since it can't build aarch64 derivations - } - // { - darwinConfigurations."mbp" = darwin.lib.darwinSystem { - system = "x86_64-darwin"; - modules = [ home.darwinModules.home-manager ./hosts/mbp ]; - inputs = { inherit darwin; }; }; + + home = { + imports = [ (digga.lib.importModules ./users/modules) ]; + externalModules = [ ]; + importables = rec { + profiles = digga.lib.rakeLeaves ./users/profiles; + suites = with profiles; rec { + base = [ direnv git zsh gpg password-store ]; + shell = [ zsh exa fzf ]; + gui = [ sway xdg gtk foot bat ]; + browser = [ firefox chromium qutebrowser ]; + multimedia = [ mpv zathura ]; + dev = [ vim emacs vscode lorri direnv ]; + }; + }; + }; + + devshell = ./shell; + + homeConfigurations = digga.lib.mkHomeConfigurations self.nixosConfigurations; + + deploy.nodes = digga.lib.mkDeployNodes self.nixosConfigurations { }; + + defaultTemplate = self.templates.bud; + templates.bud.path = ./.; + templates.bud.description = "bud template"; + + } + // { + budModules = { devos = import ./bud; }; + # checks.aarch64-linux = { }; # this line will be uncommented by Github Action in order since it can't build aarch64 derivations + } + // { + darwinConfigurations."mbp" = darwin.lib.darwinSystem { + system = "x86_64-darwin"; + modules = [ home.darwinModules.home-manager ./hosts/mbp ]; + inputs = { inherit darwin; }; + specialArgs = { inherit emacs-overlay; }; }; + }; } diff --git a/hosts/mbp/configuration.nix b/hosts/mbp/configuration.nix index 94fccdc..2d44543 100644 --- a/hosts/mbp/configuration.nix +++ b/hosts/mbp/configuration.nix @@ -1,4 +1,4 @@ -{pkgs, home-manager, ...}: +{ pkgs, home-manager, emacs-overlay, ... }: { imports = [ ../../users/andreaciceri @@ -14,6 +14,8 @@ enableSSHSupport = true; }; + nixpkgs.overlays = [ (import ../../pkgs) emacs-overlay.overlay ]; + nix = { package = pkgs.nixUnstable; extraOptions = '' @@ -27,4 +29,4 @@ options = "--delete-older-than 3d"; }; }; - } +} diff --git a/hosts/mbp/default.nix b/hosts/mbp/default.nix index f8bb144..e9338b2 100644 --- a/hosts/mbp/default.nix +++ b/hosts/mbp/default.nix @@ -1,4 +1,4 @@ -{ pkgs, ...}: +{ pkgs, emacs-overlay, ... }: { imports = [ ./configuration.nix diff --git a/pkgs/default.nix b/pkgs/default.nix index 8b8e8a5..3484178 100644 --- a/pkgs/default.nix +++ b/pkgs/default.nix @@ -1,6 +1,8 @@ final: prev: { # keep sources this first - sources = prev.callPackage (import ./_sources/generated.nix) {}; - customEmacs = prev.callPackage (import ./emacs) {}; + sources = prev.callPackage (import ./_sources/generated.nix) { }; + customEmacs = prev.callPackage (import ./emacs) { }; + ungoogled-chromium = import ./ungoogled-chromium { inherit prev; }; + vscodium = import ./vscodium { inherit prev; }; # then, call packages with `final.callPackage` } diff --git a/pkgs/ungoogled-chromium/default.nix b/pkgs/ungoogled-chromium/default.nix new file mode 100644 index 0000000..0a776f7 --- /dev/null +++ b/pkgs/ungoogled-chromium/default.nix @@ -0,0 +1,10 @@ +{ prev, pkgs, ... }: + +prev.runCommandNoCC "wrap-chromium" +{ buildInputs = with pkgs; [ makeWrapper ]; } + '' + makeWrapper ${c}/bin/chromium $out/bin/chromium \ + --add-flags "--enable-features=UseOzonePlatform" \ + --add-flags "--ozone-platform=wayland" + ln -sf ${c}/share $out/share + '' diff --git a/pkgs/vscodium/default.nix b/pkgs/vscodium/default.nix new file mode 100644 index 0000000..af087a5 --- /dev/null +++ b/pkgs/vscodium/default.nix @@ -0,0 +1,10 @@ +{ prev, pkgs, ... }: + +prev.runCommandNoCC "codium" +{ buildInputs = with pkgs; [ makeWrapper ]; } + '' + makeWrapper ${prev.vscodium}/bin/codium $out/bin/codium \ + --add-flags "--enable-features=UseOzonePlatform" \ + --add-flags "--ozone-platform=wayland" + ln -sf ${prev.vscodium}/share $out/share + '' diff --git a/profiles/chromecast/default.nix b/profiles/chromecast/default.nix new file mode 100644 index 0000000..696ff4b --- /dev/null +++ b/profiles/chromecast/default.nix @@ -0,0 +1,7 @@ +{ + config = { + networking.firewall.extraCommands = '' + iptables -I INPUT -p udp -m udp --dport 32768:60999 -j ACCEPT + ''; + }; +} diff --git a/users/andreaciceri/default.nix b/users/andreaciceri/default.nix index a1f2ed7..7eb3fd9 100644 --- a/users/andreaciceri/default.nix +++ b/users/andreaciceri/default.nix @@ -1,15 +1,15 @@ -{ config, lib, pkgs, ... }: { - home-manager.users."andreaciceri" = {...}: { +{ config, lib, pkgs, emacs-overlay, ... }: { + home-manager.users."andreaciceri" = { ... }: { imports = [ ../profiles/bat ../profiles/fzf ../profiles/zsh ../profiles/direnv ../profiles/exa + ../profiles/emacs ]; home.packages = with pkgs; [ yarn ]; }; - } diff --git a/users/profiles/emacs/default.nix b/users/profiles/emacs/default.nix index 0ab17ea..ca892e7 100644 --- a/users/profiles/emacs/default.nix +++ b/users/profiles/emacs/default.nix @@ -12,10 +12,9 @@ }; home.packages = with pkgs; [ - python-language-server fd ag nixpkgs-fmt rnix-lsp - ]; + ] ++ (if config.network.hostname != "mbp" then python-language-server else [ ]); }