format everything
This commit is contained in:
parent
fa4919f87e
commit
0fbad1d781
33 changed files with 1034 additions and 859 deletions
|
|
@ -1,4 +1,9 @@
|
||||||
{ pkgs, lib, config, ... }:
|
{
|
||||||
|
pkgs,
|
||||||
|
lib,
|
||||||
|
config,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
options.custom = with lib; {
|
options.custom = with lib; {
|
||||||
|
|
@ -37,9 +42,10 @@
|
||||||
alt-enter =
|
alt-enter =
|
||||||
let
|
let
|
||||||
script = pkgs.writeText "ghostty.applescript" ''
|
script = pkgs.writeText "ghostty.applescript" ''
|
||||||
do shell script "open -n -a Ghostty"
|
do shell script "open -n -a Ghostty"
|
||||||
'';
|
'';
|
||||||
in "exec-and-forget osascript ${script}";
|
in
|
||||||
|
"exec-and-forget osascript ${script}";
|
||||||
|
|
||||||
alt-shift-f = "fullscreen";
|
alt-shift-f = "fullscreen";
|
||||||
alt-p = "layout floating tiling";
|
alt-p = "layout floating tiling";
|
||||||
|
|
@ -120,8 +126,8 @@
|
||||||
|
|
||||||
on-window-detected = [
|
on-window-detected = [
|
||||||
{
|
{
|
||||||
"if".app-id="com.mitchellh.ghostty";
|
"if".app-id = "com.mitchellh.ghostty";
|
||||||
run= [ "layout tiling" ];
|
run = [ "layout tiling" ];
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
system,
|
system,
|
||||||
host,
|
host,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./aerospace.nix
|
./aerospace.nix
|
||||||
./homebrew.nix
|
./homebrew.nix
|
||||||
|
|
@ -53,10 +54,13 @@
|
||||||
# networking.hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName);
|
# networking.hostId = builtins.substring 0 8 (builtins.hashString "md5" config.networking.hostName);
|
||||||
# networking.networkmanager.enable = true;
|
# networking.networkmanager.enable = true;
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages =
|
||||||
vim
|
with pkgs;
|
||||||
htop
|
[
|
||||||
] ++ (lib.attrValues config.custom.shell.packages);
|
vim
|
||||||
|
htop
|
||||||
|
]
|
||||||
|
++ (lib.attrValues config.custom.shell.packages);
|
||||||
|
|
||||||
system.stateVersion = 6;
|
system.stateVersion = 6;
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -1,34 +1,87 @@
|
||||||
{ pkgs, user, inputs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
user,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
|
|
||||||
{
|
{
|
||||||
nix-homebrew = {
|
options.custom.brew = with lib; {
|
||||||
inherit user;
|
zen-browser = mkEnableOption "Enable Zen Browser";
|
||||||
enable = true;
|
webex = mkEnableOption "Enable Webe";
|
||||||
enableRosetta = true;
|
zoom = mkEnableOption "Enable Zoom";
|
||||||
taps = {
|
slack = mkEnableOption "Enable Slack";
|
||||||
"homebrew/homebrew-core" = inputs.homebrew-core;
|
ghostty = mkEnableOption "Enable Ghostty";
|
||||||
"homebrew/homebrew-cask" = inputs.homebrew-cask;
|
ms-office = mkEnableOption "Enable MS Office";
|
||||||
"homebrew/homebrew-createzap" = inputs.homebrew-createzap;
|
ms-teams = mkEnableOption "Enable MS Teams";
|
||||||
};
|
spotify = mkEnableOption "Enable Spotify";
|
||||||
mutableTaps = false;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
homebrew = {
|
config = lib.mkMerge [
|
||||||
enable = true;
|
{
|
||||||
onActivation = {
|
nix-homebrew = {
|
||||||
# autoUpdate = true;
|
inherit user;
|
||||||
# cleanup = "zap";
|
enable = true;
|
||||||
};
|
enableRosetta = true;
|
||||||
global = {
|
taps = {
|
||||||
brewfile = true;
|
"homebrew/homebrew-core" = inputs.homebrew-core;
|
||||||
};
|
"homebrew/homebrew-cask" = inputs.homebrew-cask;
|
||||||
casks = [
|
"homebrew/homebrew-createzap" = inputs.homebrew-createzap;
|
||||||
"zen-browser"
|
};
|
||||||
"webex"
|
mutableTaps = false;
|
||||||
"slack"
|
};
|
||||||
"zoom"
|
homebrew = {
|
||||||
"spotify"
|
enable = true;
|
||||||
"ghostty"
|
onActivation = {
|
||||||
];
|
# autoUpdate = true;
|
||||||
};
|
# cleanup = "zap";
|
||||||
|
};
|
||||||
|
global = {
|
||||||
|
brewfile = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
}
|
||||||
|
(lib.mkIf config.custom.brew.zen-browser {
|
||||||
|
homebrew.casks = [
|
||||||
|
"zen-browser"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.webex {
|
||||||
|
homebrew.casks = [
|
||||||
|
"webex"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.slack {
|
||||||
|
homebrew.casks = [
|
||||||
|
"slack"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.zoom {
|
||||||
|
homebrew.casks = [
|
||||||
|
"zoom"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.spotify {
|
||||||
|
homebrew.casks = [
|
||||||
|
"spotify"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.ghostty {
|
||||||
|
homebrew.casks = [
|
||||||
|
"ghostty"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.ms-office {
|
||||||
|
homebrew.casks = [
|
||||||
|
"microsoft-office"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
(lib.mkIf config.custom.brew.ms-teams {
|
||||||
|
homebrew.casks = [
|
||||||
|
"microsoft-teams"
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
184
flake.nix
184
flake.nix
|
|
@ -36,103 +36,117 @@
|
||||||
homebrew-createzap.flake = false;
|
homebrew-createzap.flake = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
outputs = {
|
outputs =
|
||||||
self,
|
{
|
||||||
nixpkgs,
|
self,
|
||||||
home-manager,
|
nixpkgs,
|
||||||
treefmt-nix,
|
home-manager,
|
||||||
...
|
treefmt-nix,
|
||||||
} @ inputs: let
|
...
|
||||||
inherit (self) outputs;
|
}@inputs:
|
||||||
user = "rayandrew";
|
let
|
||||||
lib = nixpkgs.lib;
|
inherit (self) outputs;
|
||||||
commonArgs = {
|
user = "rayandrew";
|
||||||
inherit
|
lib = nixpkgs.lib;
|
||||||
|
commonArgs = {
|
||||||
|
inherit
|
||||||
self
|
self
|
||||||
inputs
|
inputs
|
||||||
nixpkgs
|
nixpkgs
|
||||||
lib
|
lib
|
||||||
;
|
;
|
||||||
specialArgs = {
|
specialArgs = {
|
||||||
inherit self inputs;
|
inherit self inputs;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
# call with forAllSystems (commonArgs: function body)
|
# call with forAllSystems (commonArgs: function body)
|
||||||
forAllSystems =
|
forAllSystems =
|
||||||
fn:
|
fn:
|
||||||
lib.genAttrs [
|
lib.genAttrs
|
||||||
"x86_64-linux"
|
[
|
||||||
"aarch64-linux"
|
"x86_64-linux"
|
||||||
"x86_64-darwin"
|
"aarch64-linux"
|
||||||
"aarch64-darwin"
|
"x86_64-darwin"
|
||||||
] (system: fn (commonArgs // { inherit system; pkgs = import inputs.nixpkgs {
|
"aarch64-darwin"
|
||||||
inherit system;
|
]
|
||||||
config.allowUnfree = true;
|
(
|
||||||
}; }));
|
system:
|
||||||
treefmtEval = forAllSystems (
|
fn (
|
||||||
{ pkgs, ... }:
|
commonArgs
|
||||||
treefmt-nix.lib.evalModule pkgs {
|
// {
|
||||||
projectRootFile = "flake.nix";
|
inherit system;
|
||||||
programs.nixfmt-rfc-style.enable = true;
|
pkgs = import inputs.nixpkgs {
|
||||||
settings.global.excludes = [ "flake.lock" ];
|
inherit system;
|
||||||
}
|
config.allowUnfree = true;
|
||||||
);
|
};
|
||||||
in (import ./hosts commonArgs) //
|
}
|
||||||
{
|
)
|
||||||
checks = forAllSystems (
|
);
|
||||||
{
|
treefmtEval = forAllSystems (
|
||||||
pkgs,
|
{ pkgs, ... }:
|
||||||
system,
|
treefmt-nix.lib.evalModule pkgs {
|
||||||
...
|
projectRootFile = "flake.nix";
|
||||||
}:
|
programs.nixfmt-rfc-style.enable = true;
|
||||||
{
|
settings.global.excludes = [ "flake.lock" ];
|
||||||
formatting = treefmtEval.${system}.config.build.check self;
|
}
|
||||||
pre-commit-check = inputs.git-hooks.lib.${system}.run {
|
);
|
||||||
src = ./.;
|
in
|
||||||
excludes = [ "flake.lock" ];
|
(import ./hosts commonArgs)
|
||||||
hooks = {
|
// {
|
||||||
treefmt = {
|
checks = forAllSystems (
|
||||||
enable = true;
|
{
|
||||||
package = lib.mkForce treefmtEval.${system}.config.build.wrapper;
|
pkgs,
|
||||||
args = [
|
system,
|
||||||
# "--config-file ${treefmtEval.${system}.config.build.configFile}"
|
...
|
||||||
];
|
}:
|
||||||
|
{
|
||||||
|
formatting = treefmtEval.${system}.config.build.check self;
|
||||||
|
pre-commit-check = inputs.git-hooks.lib.${system}.run {
|
||||||
|
src = ./.;
|
||||||
|
excludes = [ "flake.lock" ];
|
||||||
|
hooks = {
|
||||||
|
treefmt = {
|
||||||
|
enable = true;
|
||||||
|
package = lib.mkForce treefmtEval.${system}.config.build.wrapper;
|
||||||
|
args = [
|
||||||
|
# "--config-file ${treefmtEval.${system}.config.build.configFile}"
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
}
|
||||||
}
|
);
|
||||||
);
|
|
||||||
|
|
||||||
devShells = forAllSystems (
|
devShells = forAllSystems (
|
||||||
{
|
{
|
||||||
pkgs,
|
pkgs,
|
||||||
system,
|
system,
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
default = pkgs.mkShell {
|
default = pkgs.mkShell {
|
||||||
inherit (self.checks.${system}.pre-commit-check) shellHook;
|
inherit (self.checks.${system}.pre-commit-check) shellHook;
|
||||||
|
|
||||||
name = "dotfiles";
|
name = "dotfiles";
|
||||||
buildInputs = self.checks.${system}.pre-commit-check.enabledPackages;
|
buildInputs = self.checks.${system}.pre-commit-check.enabledPackages;
|
||||||
nativeBuildInputs = [
|
nativeBuildInputs = [
|
||||||
treefmtEval.${system}.config.build.wrapper
|
treefmtEval.${system}.config.build.wrapper
|
||||||
];
|
];
|
||||||
packages = with pkgs; [
|
packages = with pkgs; [
|
||||||
sops
|
sops
|
||||||
age
|
age
|
||||||
ssh-to-age
|
ssh-to-age
|
||||||
nixfmt-rfc-style
|
nixfmt-rfc-style
|
||||||
];
|
];
|
||||||
DIRENV_LOG_FORMAT = "";
|
DIRENV_LOG_FORMAT = "";
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
||||||
packages = forAllSystems (commonArgs': (import ./packages commonArgs'));
|
packages = forAllSystems (commonArgs': (import ./packages commonArgs'));
|
||||||
|
|
||||||
formatter = forAllSystems ({ system, ... }: treefmtEval.${system}.config.build.wrapper);
|
formatter = forAllSystems ({ system, ... }: treefmtEval.${system}.config.build.wrapper);
|
||||||
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
system,
|
system,
|
||||||
dots,
|
dots,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./email
|
./email
|
||||||
./emacs
|
./emacs
|
||||||
|
|
@ -53,7 +54,7 @@
|
||||||
programs = {
|
programs = {
|
||||||
nh = {
|
nh = {
|
||||||
enable = true;
|
enable = true;
|
||||||
package = pkgs.custom.nh;
|
package = pkgs.custom.nh;
|
||||||
clean.enable = true;
|
clean.enable = true;
|
||||||
clean.extraArgs = "--keep-since 4d --keep 3";
|
clean.extraArgs = "--keep-since 4d --keep 3";
|
||||||
flake = dots;
|
flake = dots;
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
config,
|
config,
|
||||||
dots,
|
dots,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
options.custom = with lib; {
|
options.custom = with lib; {
|
||||||
emacs = {
|
emacs = {
|
||||||
enable = mkEnableOption "Enable emacs";
|
enable = mkEnableOption "Enable emacs";
|
||||||
|
|
|
||||||
|
|
@ -24,7 +24,7 @@
|
||||||
enable = config.custom.email.davmail;
|
enable = config.custom.email.davmail;
|
||||||
settings = {
|
settings = {
|
||||||
"davmail.mode" = "O365Manual";
|
"davmail.mode" = "O365Manual";
|
||||||
"davmail.url" = "https://outlook.office365.com/EWS/Exchange.asmx";
|
"davmail.url" = "https://outlook.office365.com/EWS/Exchange.asmx";
|
||||||
# davmail.mode = "O365Modern";
|
# davmail.mode = "O365Modern";
|
||||||
"davmail.keepDelay" = 30;
|
"davmail.keepDelay" = 30;
|
||||||
# log4j.logger.davmail = "DEBUG";
|
# log4j.logger.davmail = "DEBUG";
|
||||||
|
|
@ -65,145 +65,147 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
accounts.email = let
|
accounts.email =
|
||||||
cat = lib.getExe' pkgs.coreutils "cat";
|
let
|
||||||
in rec {
|
cat = lib.getExe' pkgs.coreutils "cat";
|
||||||
maildirBasePath = "${home-dir}/mail";
|
in
|
||||||
accounts = lib.mkMerge ([
|
rec {
|
||||||
{
|
maildirBasePath = "${home-dir}/mail";
|
||||||
"personal" = {
|
accounts = lib.mkMerge ([
|
||||||
userName = "raydreww@gmail.com";
|
{
|
||||||
address = "raydreww@gmail.com";
|
"personal" = {
|
||||||
realName = "Ray Andrew";
|
userName = "raydreww@gmail.com";
|
||||||
primary = !config.custom.email.davmail;
|
address = "raydreww@gmail.com";
|
||||||
signature = {
|
realName = "Ray Andrew";
|
||||||
text = ''
|
primary = !config.custom.email.davmail;
|
||||||
-- Ray Andrew
|
signature = {
|
||||||
'';
|
text = ''
|
||||||
showSignature = "append";
|
-- Ray Andrew
|
||||||
};
|
'';
|
||||||
passwordCommand = "${cat} ${config.sops.secrets."personal".path}";
|
showSignature = "append";
|
||||||
gpg = {
|
};
|
||||||
key = "1913ECC8FD7076BC8330E11607AA5254804C009F";
|
passwordCommand = "${cat} ${config.sops.secrets."personal".path}";
|
||||||
signByDefault = true;
|
gpg = {
|
||||||
};
|
key = "1913ECC8FD7076BC8330E11607AA5254804C009F";
|
||||||
smtp = {
|
signByDefault = true;
|
||||||
host = "smtp.gmail.com";
|
};
|
||||||
};
|
smtp = {
|
||||||
imap = {
|
host = "smtp.gmail.com";
|
||||||
host = "imap.gmail.com";
|
};
|
||||||
};
|
imap = {
|
||||||
mbsync = {
|
host = "imap.gmail.com";
|
||||||
enable = true;
|
};
|
||||||
create = "both";
|
mbsync = {
|
||||||
expunge = "both";
|
enable = true;
|
||||||
patterns = [
|
create = "both";
|
||||||
"*"
|
expunge = "both";
|
||||||
"!\"[Airmail]/Done\""
|
patterns = [
|
||||||
"!\"[Airmail]/Snooze\""
|
"*"
|
||||||
"!\"[Airmail]/To Do\""
|
"!\"[Airmail]/Done\""
|
||||||
"!\"[Airmail]/Send Later\""
|
"!\"[Airmail]/Snooze\""
|
||||||
"!\"[Gmail]/All Mail\""
|
"!\"[Airmail]/To Do\""
|
||||||
"!\"[Gmail]/Important\""
|
"!\"[Airmail]/Send Later\""
|
||||||
"!\"[Gmail]/Starred\""
|
"!\"[Gmail]/All Mail\""
|
||||||
"!\"[Gmail]/Bin\""
|
"!\"[Gmail]/Important\""
|
||||||
];
|
"!\"[Gmail]/Starred\""
|
||||||
};
|
"!\"[Gmail]/Bin\""
|
||||||
msmtp = {
|
];
|
||||||
enable = true;
|
};
|
||||||
};
|
msmtp = {
|
||||||
neomutt = rec {
|
enable = true;
|
||||||
enable = true;
|
};
|
||||||
mailboxName = "p";
|
neomutt = rec {
|
||||||
extraConfig = ''
|
enable = true;
|
||||||
set use_from = yes
|
mailboxName = "p";
|
||||||
set pgp_verify_sig = yes
|
extraConfig = ''
|
||||||
set pgp_sign_as = 0x07AA5254804C009F
|
set use_from = yes
|
||||||
set pgp_timeout = 3600
|
set pgp_verify_sig = yes
|
||||||
named-mailboxes "${mailboxName}/inbox" =Inbox
|
set pgp_sign_as = 0x07AA5254804C009F
|
||||||
named-mailboxes "${mailboxName}/drafts" =Drafts
|
set pgp_timeout = 3600
|
||||||
named-mailboxes "${mailboxName}/sent" =Sent
|
named-mailboxes "${mailboxName}/inbox" =Inbox
|
||||||
named-mailboxes "${mailboxName}/important" =Important
|
named-mailboxes "${mailboxName}/drafts" =Drafts
|
||||||
named-mailboxes "${mailboxName}/trash" =Trash
|
named-mailboxes "${mailboxName}/sent" =Sent
|
||||||
named-mailboxes "${mailboxName}/archive" =Archive
|
named-mailboxes "${mailboxName}/important" =Important
|
||||||
'';
|
named-mailboxes "${mailboxName}/trash" =Trash
|
||||||
};
|
named-mailboxes "${mailboxName}/archive" =Archive
|
||||||
};
|
'';
|
||||||
}
|
|
||||||
(lib.mkIf config.custom.email.davmail {
|
|
||||||
"uchicago" = {
|
|
||||||
userName = "rayandrew@uchicago.edu";
|
|
||||||
address = "rayandrew@uchicago.edu";
|
|
||||||
realName = "Ray Andrew";
|
|
||||||
primary = true;
|
|
||||||
signature = {
|
|
||||||
text = ''
|
|
||||||
-- Ray Andrew
|
|
||||||
'';
|
|
||||||
showSignature = "append";
|
|
||||||
};
|
|
||||||
passwordCommand = "${cat} ${config.sops.secrets."uchicago".path}";
|
|
||||||
gpg = {
|
|
||||||
key = "0BADFAD0FB93296C84956F9CEEF04CFFE9DFE5FC";
|
|
||||||
signByDefault = false;
|
|
||||||
};
|
|
||||||
smtp = {
|
|
||||||
host = "127.0.0.1";
|
|
||||||
port = 1025;
|
|
||||||
tls = {
|
|
||||||
enable = false;
|
|
||||||
certificatesFile = null;
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
imap = {
|
}
|
||||||
host = "127.0.0.1";
|
(lib.mkIf config.custom.email.davmail {
|
||||||
port = 1143;
|
"uchicago" = {
|
||||||
tls.enable = false;
|
userName = "rayandrew@uchicago.edu";
|
||||||
};
|
address = "rayandrew@uchicago.edu";
|
||||||
mbsync = {
|
realName = "Ray Andrew";
|
||||||
enable = true;
|
primary = true;
|
||||||
create = "both";
|
signature = {
|
||||||
expunge = "both";
|
text = ''
|
||||||
patterns = [
|
-- Ray Andrew
|
||||||
"*"
|
'';
|
||||||
"!\"[Airmail]/Done\""
|
showSignature = "append";
|
||||||
"!\"[Airmail]/Snooze\""
|
};
|
||||||
"!\"[Airmail]/To Do\""
|
passwordCommand = "${cat} ${config.sops.secrets."uchicago".path}";
|
||||||
"!\"[Airmail]/Send Later\""
|
gpg = {
|
||||||
];
|
key = "0BADFAD0FB93296C84956F9CEEF04CFFE9DFE5FC";
|
||||||
extraConfig.account = {
|
signByDefault = false;
|
||||||
TLSType = "None";
|
};
|
||||||
AuthMechs = "LOGIN";
|
smtp = {
|
||||||
Timeout = 0;
|
host = "127.0.0.1";
|
||||||
|
port = 1025;
|
||||||
|
tls = {
|
||||||
|
enable = false;
|
||||||
|
certificatesFile = null;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
imap = {
|
||||||
|
host = "127.0.0.1";
|
||||||
|
port = 1143;
|
||||||
|
tls.enable = false;
|
||||||
|
};
|
||||||
|
mbsync = {
|
||||||
|
enable = true;
|
||||||
|
create = "both";
|
||||||
|
expunge = "both";
|
||||||
|
patterns = [
|
||||||
|
"*"
|
||||||
|
"!\"[Airmail]/Done\""
|
||||||
|
"!\"[Airmail]/Snooze\""
|
||||||
|
"!\"[Airmail]/To Do\""
|
||||||
|
"!\"[Airmail]/Send Later\""
|
||||||
|
];
|
||||||
|
extraConfig.account = {
|
||||||
|
TLSType = "None";
|
||||||
|
AuthMechs = "LOGIN";
|
||||||
|
Timeout = 0;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
msmtp = {
|
||||||
|
enable = true;
|
||||||
|
extraConfig = {
|
||||||
|
auth = "plain";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
neomutt = rec {
|
||||||
|
enable = true;
|
||||||
|
mailboxName = "u";
|
||||||
|
extraConfig = ''
|
||||||
|
set use_from = yes
|
||||||
|
set pgp_sign_as = 0xEEF04CFFE9DFE5FC
|
||||||
|
set pgp_verify_sig = yes
|
||||||
|
set pgp_timeout = 3600
|
||||||
|
named-mailboxes "${mailboxName}/inbox" =Inbox
|
||||||
|
named-mailboxes "${mailboxName}/drafts" =Drafts
|
||||||
|
named-mailboxes "${mailboxName}/sent" =Sent
|
||||||
|
named-mailboxes "${mailboxName}/important" =Important
|
||||||
|
named-mailboxes "${mailboxName}/trash" =Trash
|
||||||
|
named-mailboxes "${mailboxName}/archive" =Archive
|
||||||
|
named-mailboxes "${mailboxName}/teaching" =Teaching
|
||||||
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
msmtp = {
|
})
|
||||||
enable = true;
|
]);
|
||||||
extraConfig = {
|
};
|
||||||
auth = "plain";
|
|
||||||
};
|
|
||||||
};
|
|
||||||
neomutt = rec {
|
|
||||||
enable = true;
|
|
||||||
mailboxName = "u";
|
|
||||||
extraConfig = ''
|
|
||||||
set use_from = yes
|
|
||||||
set pgp_sign_as = 0xEEF04CFFE9DFE5FC
|
|
||||||
set pgp_verify_sig = yes
|
|
||||||
set pgp_timeout = 3600
|
|
||||||
named-mailboxes "${mailboxName}/inbox" =Inbox
|
|
||||||
named-mailboxes "${mailboxName}/drafts" =Drafts
|
|
||||||
named-mailboxes "${mailboxName}/sent" =Sent
|
|
||||||
named-mailboxes "${mailboxName}/important" =Important
|
|
||||||
named-mailboxes "${mailboxName}/trash" =Trash
|
|
||||||
named-mailboxes "${mailboxName}/archive" =Archive
|
|
||||||
named-mailboxes "${mailboxName}/teaching" =Teaching
|
|
||||||
'';
|
|
||||||
};
|
|
||||||
};
|
|
||||||
})
|
|
||||||
]);
|
|
||||||
};
|
|
||||||
|
|
||||||
sops = {
|
sops = {
|
||||||
age.keyFile = "${home-dir}/.config/sops/age/keys.txt";
|
age.keyFile = "${home-dir}/.config/sops/age/keys.txt";
|
||||||
|
|
|
||||||
|
|
@ -23,26 +23,26 @@ in
|
||||||
|
|
||||||
home.file.".mailcap" = {
|
home.file.".mailcap" = {
|
||||||
text = ''
|
text = ''
|
||||||
# HTML
|
# HTML
|
||||||
text/html; ${w3m} -sixel -o tmp_dir=~/.cache/w3m -o auto_image=TRUE -o display_image=1 -T text/html %s; nametemplate=%s.html
|
text/html; ${w3m} -sixel -o tmp_dir=~/.cache/w3m -o auto_image=TRUE -o display_image=1 -T text/html %s; nametemplate=%s.html
|
||||||
# text/html; ${w3m} -o inline_img_protocol=4 -o tmp_dir=~/.cache/w3m -o auto_image=TRUE -o display_image=1 -T text/html %s; nametemplate=%s.html
|
# text/html; ${w3m} -o inline_img_protocol=4 -o tmp_dir=~/.cache/w3m -o auto_image=TRUE -o display_image=1 -T text/html %s; nametemplate=%s.html
|
||||||
|
|
||||||
# This second one is chosen by auto_view due to the copiousoutput tag
|
# This second one is chosen by auto_view due to the copiousoutput tag
|
||||||
text/html; ${w3m} -I %{charset} -T text/html -cols 140 -o tmp_dir=~/.cache/w3m -o display_link_number=1 -dump; copiousoutput
|
text/html; ${w3m} -I %{charset} -T text/html -cols 140 -o tmp_dir=~/.cache/w3m -o display_link_number=1 -dump; copiousoutput
|
||||||
text/plain; nvim %s
|
text/plain; nvim %s
|
||||||
|
|
||||||
#PDFs
|
#PDFs
|
||||||
application/x-pdf; ${zathura} '%s'; test=test -n "$DISPLAY"
|
application/x-pdf; ${zathura} '%s'; test=test -n "$DISPLAY"
|
||||||
application/pdf; ${zathura} '%s'; test=test -n "$DISPLAY"
|
application/pdf; ${zathura} '%s'; test=test -n "$DISPLAY"
|
||||||
|
|
||||||
message/rfc822; nvim %s
|
message/rfc822; nvim %s
|
||||||
|
|
||||||
#Images
|
#Images
|
||||||
# image/png; /usr/bin/feh %s
|
# image/png; /usr/bin/feh %s
|
||||||
# image/jpeg; /usr/bin/feh %s
|
# image/jpeg; /usr/bin/feh %s
|
||||||
# image/*; (clear && ${term} +kitten icat %s); needsterminal
|
# image/*; (clear && ${term} +kitten icat %s); needsterminal
|
||||||
image/*; (clear && ${term} imgcat %s); needsterminal
|
image/*; (clear && ${term} imgcat %s); needsterminal
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -20,13 +20,16 @@ in
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf (config.custom.email.enable && config.custom.email.neomutt) {
|
config = lib.mkIf (config.custom.email.enable && config.custom.email.neomutt) {
|
||||||
xsession.windowManager.i3.config = let
|
xsession.windowManager.i3.config =
|
||||||
i3config = config.xsession.windowManager.i3.config;
|
let
|
||||||
in {
|
i3config = config.xsession.windowManager.i3.config;
|
||||||
keybindings = lib.mkOptionDefault {
|
in
|
||||||
"${i3config.modifier}+m" = "exec --no-startup-id ${i3config.terminal} -e ${config.programs.neomutt.package}/bin/neomutt";
|
{
|
||||||
|
keybindings = lib.mkOptionDefault {
|
||||||
|
"${i3config.modifier}+m" =
|
||||||
|
"exec --no-startup-id ${i3config.terminal} -e ${config.programs.neomutt.package}/bin/neomutt";
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
programs.neomutt = {
|
programs.neomutt = {
|
||||||
enable = true;
|
enable = true;
|
||||||
|
|
@ -36,40 +39,40 @@ in
|
||||||
binds = keybinds.binds ++ [ ];
|
binds = keybinds.binds ++ [ ];
|
||||||
macros = keybinds.macros ++ [ ];
|
macros = keybinds.macros ++ [ ];
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
set abort_key = "<Esc>"
|
set abort_key = "<Esc>"
|
||||||
|
|
||||||
# set editor = "nvim"
|
# set editor = "nvim"
|
||||||
set editor = "emacs -nw"
|
set editor = "emacs -nw"
|
||||||
|
|
||||||
set edit_headers = yes
|
set edit_headers = yes
|
||||||
set sidebar_visible
|
set sidebar_visible
|
||||||
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
|
set sidebar_format = "%D%?F? [%F]?%* %?N?%N/?%S"
|
||||||
set mail_check_stats
|
set mail_check_stats
|
||||||
# set new_mail_command="notify-send 'New Email' '%n new messages, %u unread.' &"
|
# set new_mail_command="notify-send 'New Email' '%n new messages, %u unread.' &"
|
||||||
|
|
||||||
# status bar, date format, finding stuff etc.
|
# status bar, date format, finding stuff etc.
|
||||||
set status_chars = " *%A"
|
set status_chars = " *%A"
|
||||||
# set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
# set status_format = "[ Folder: %f ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
||||||
set status_format = "[ Folder: %D ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
set status_format = "[ Folder: %D ] [%r%m messages%?n? (%n new)?%?d? (%d to delete)?%?t? (%t tagged)? ]%>─%?p?( %p postponed )?"
|
||||||
set date_format = "%d.%m.%Y %H:%M"
|
set date_format = "%d.%m.%Y %H:%M"
|
||||||
set uncollapse_jump
|
set uncollapse_jump
|
||||||
set sort_re
|
set sort_re
|
||||||
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
set reply_regexp = "^(([Rr][Ee]?(\[[0-9]+\])?: *)?(\[[^]]+\] *)?)*"
|
||||||
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
set quote_regexp = "^( {0,4}[>|:#%]| {0,4}[a-z0-9]+[>|]+)+"
|
||||||
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
set send_charset = "utf-8:iso-8859-1:us-ascii"
|
||||||
set charset = "utf-8"
|
set charset = "utf-8"
|
||||||
set arrow_cursor = "no" # Change `color indicator` depending
|
set arrow_cursor = "no" # Change `color indicator` depending
|
||||||
|
|
||||||
# Pager View Options
|
# Pager View Options
|
||||||
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
set pager_index_lines = 10 # Shows 10 lines of index when pager is active
|
||||||
set pager_context = 3
|
set pager_context = 3
|
||||||
set pager_stop
|
set pager_stop
|
||||||
set menu_scroll
|
set menu_scroll
|
||||||
set tilde
|
set tilde
|
||||||
unset markers
|
unset markers
|
||||||
|
|
||||||
${colors}
|
${colors}
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -15,53 +15,56 @@
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.custom.gui.ghostty.enable {
|
config = lib.mkIf config.custom.gui.ghostty.enable {
|
||||||
home.packages = lib.mkIf pkgs.stdenv.isLinux (with pkgs; [
|
home.packages = lib.mkIf pkgs.stdenv.isLinux (
|
||||||
inputs.ghostty.packages."${system}".default
|
with pkgs;
|
||||||
]);
|
[
|
||||||
|
inputs.ghostty.packages."${system}".default
|
||||||
|
]
|
||||||
|
);
|
||||||
xdg.configFile."ghostty/config".text = ''
|
xdg.configFile."ghostty/config".text = ''
|
||||||
gtk-single-instance = true
|
gtk-single-instance = true
|
||||||
gtk-titlebar = false
|
gtk-titlebar = false
|
||||||
window-decoration = server
|
window-decoration = server
|
||||||
quit-after-last-window-closed = true
|
quit-after-last-window-closed = true
|
||||||
# gtk-adwaita = false
|
# gtk-adwaita = false
|
||||||
font-family = ${system-font}
|
font-family = ${system-font}
|
||||||
font-size = 11
|
font-size = 11
|
||||||
app-notifications = no-clipboard-copy
|
app-notifications = no-clipboard-copy
|
||||||
# theme = gruber-darker
|
# theme = gruber-darker
|
||||||
# font-family = Iosevka Nerd Font Mono
|
# font-family = Iosevka Nerd Font Mono
|
||||||
# font-size = 13
|
# font-size = 13
|
||||||
|
|
||||||
# background = #062329
|
# background = #062329
|
||||||
background = #072626
|
background = #072626
|
||||||
# foreground = #d1b897
|
# foreground = #d1b897
|
||||||
foreground = #d3b58d
|
foreground = #d3b58d
|
||||||
cursor-color = #ffffff
|
cursor-color = #ffffff
|
||||||
# cursor-text = #d1b897
|
# cursor-text = #d1b897
|
||||||
cursor-text = #d3b58d
|
cursor-text = #d3b58d
|
||||||
# selection-background = #0000ff
|
# selection-background = #0000ff
|
||||||
# selection-foreground = #d1b897
|
# selection-foreground = #d1b897
|
||||||
selection-background = #0000ff
|
selection-background = #0000ff
|
||||||
selection-foreground = #d3b58d
|
selection-foreground = #d3b58d
|
||||||
# palette = 0=#062329
|
# palette = 0=#062329
|
||||||
palette = 0=#072626
|
palette = 0=#072626
|
||||||
# palette = 1=#0b3335
|
# palette = 1=#0b3335
|
||||||
# palette = 2=#0000ff
|
# palette = 2=#0000ff
|
||||||
palette = 3=#44b340
|
palette = 3=#44b340
|
||||||
palette = 4=#8cde94
|
palette = 4=#8cde94
|
||||||
# palette = 5=#d1b897
|
# palette = 5=#d1b897
|
||||||
palette = 5=#d3b58d
|
palette = 5=#d3b58d
|
||||||
palette = 6=#c1d1e3
|
palette = 6=#c1d1e3
|
||||||
palette = 7=#ffffff
|
palette = 7=#ffffff
|
||||||
palette = 8=#626880
|
palette = 8=#626880
|
||||||
palette = 9=#e67172
|
palette = 9=#e67172
|
||||||
palette = 10=#8ec772
|
palette = 10=#8ec772
|
||||||
palette = 11=#d9ba73
|
palette = 11=#d9ba73
|
||||||
palette = 12=#7b9ef0
|
palette = 12=#7b9ef0
|
||||||
palette = 13=#f2a4db
|
palette = 13=#f2a4db
|
||||||
palette = 14=#5abfb5
|
palette = 14=#5abfb5
|
||||||
palette = 15=#b5bfe2
|
palette = 15=#b5bfe2
|
||||||
|
|
||||||
keybind = all:ctrl+shift+period=text:\x1b\x1f\x4c\x23\x1f
|
keybind = all:ctrl+shift+period=text:\x1b\x1f\x4c\x23\x1f
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
211
home/gui.nix
211
home/gui.nix
|
|
@ -25,116 +25,109 @@
|
||||||
darwin = {
|
darwin = {
|
||||||
enable = mkEnableOption "Enable Darwin-only GUI";
|
enable = mkEnableOption "Enable Darwin-only GUI";
|
||||||
};
|
};
|
||||||
};
|
vscode = {
|
||||||
|
enable = mkEnableOption "Enable VSCode";
|
||||||
config = lib.mkIf config.custom.gui.default.enable {
|
|
||||||
dconf.settings = {
|
|
||||||
"org/gnome/desktop/interface" = {
|
|
||||||
color-scheme = "prefer-dark";
|
|
||||||
show-battery-percentage = true;
|
|
||||||
clock-format = "12h";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
firefox = {
|
||||||
programs.vscode = {
|
enable = mkEnableOption "Enable Firefox";
|
||||||
enable = true;
|
|
||||||
package = pkgs.vscode;
|
|
||||||
profiles.default = {
|
|
||||||
extensions = with pkgs.vscode-extensions; [
|
|
||||||
bbenoist.nix
|
|
||||||
ms-python.python
|
|
||||||
ms-vscode-remote.remote-ssh
|
|
||||||
] ++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
|
||||||
{
|
|
||||||
name = "remote-ssh-edit";
|
|
||||||
publisher = "ms-vscode-remote";
|
|
||||||
version = "0.87.0";
|
|
||||||
sha256 = "sha256-yeX6RAJl07d+SuYyGQFLZNcUzVKAsmPFyTKEn+y3GuM=";
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
programs.firefox = {
|
|
||||||
enable = true;
|
|
||||||
# package = lib.mkIf custom.gui.darwin.enable pkgs.firefox-bin or pkgs.firefox;
|
|
||||||
package = if config.custom.gui.darwin.enable then pkgs.firefox-bin else pkgs.firefox;
|
|
||||||
};
|
|
||||||
|
|
||||||
home.sessionVariables = lib.mkIf config.custom.gui.darwin.enable {
|
|
||||||
MOZ_LEGACY_PROFILES = "1";
|
|
||||||
};
|
|
||||||
|
|
||||||
# launchd.user.envVariables = lib.mkIf config.custom.gui.darwin.enable {
|
|
||||||
# MOZ_LEGACY_PROFILES = "1";
|
|
||||||
# };
|
|
||||||
|
|
||||||
home.packages = with pkgs; [
|
|
||||||
# globalprotect-openconnect
|
|
||||||
# firefox
|
|
||||||
# fonts
|
|
||||||
custom.sf-mono
|
|
||||||
custom.sf-symbols
|
|
||||||
ultimate-oldschool-pc-font-pack
|
|
||||||
vista-fonts
|
|
||||||
nerd-fonts.ubuntu-mono
|
|
||||||
nerd-fonts.iosevka
|
|
||||||
nerd-fonts.fira-code
|
|
||||||
nerd-fonts.sauce-code-pro
|
|
||||||
nerd-fonts.inconsolata
|
|
||||||
nerd-fonts.inconsolata-go
|
|
||||||
nerd-fonts.droid-sans-mono
|
|
||||||
nerd-fonts.space-mono
|
|
||||||
nerd-fonts.dejavu-sans-mono
|
|
||||||
]
|
|
||||||
++ lib.optionals config.custom.gui.darwin.enable [
|
|
||||||
raycast
|
|
||||||
custom.whatsapp-for-mac
|
|
||||||
]
|
|
||||||
++ lib.optionals config.custom.gui.linux.enable [
|
|
||||||
zotero
|
|
||||||
zoom-us
|
|
||||||
spotify
|
|
||||||
slack
|
|
||||||
webex
|
|
||||||
whatsapp-for-linux
|
|
||||||
teams-for-linux
|
|
||||||
skypeforlinux
|
|
||||||
inputs.zen-browser.packages."${system}".twilight
|
|
||||||
chromium
|
|
||||||
arandr
|
|
||||||
seahorse # gnome keyring
|
|
||||||
xfce.thunar
|
|
||||||
xfce.thunar-volman
|
|
||||||
xclip
|
|
||||||
quickemu
|
|
||||||
gf # debugger
|
|
||||||
];
|
|
||||||
|
|
||||||
gtk = {
|
|
||||||
enable = true;
|
|
||||||
theme = {
|
|
||||||
name = "Adwaita-dark";
|
|
||||||
package = pkgs.gnome-themes-extra;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
|
|
||||||
qt = {
|
|
||||||
enable = config.custom.gui.linux.enable;
|
|
||||||
platformTheme.name = "adwaita";
|
|
||||||
style.name = "adwaita-dark";
|
|
||||||
};
|
|
||||||
|
|
||||||
services.redshift = {
|
|
||||||
enable = config.custom.gui.linux.enable;
|
|
||||||
# provider = "geoclue2";
|
|
||||||
provider = "manual";
|
|
||||||
# madison
|
|
||||||
latitude = "43.07305000";
|
|
||||||
longitude = "-89.40123000";
|
|
||||||
# chicago
|
|
||||||
# latitude = "41.85003000";
|
|
||||||
# longitude = "-87.65005000";
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
config = lib.mkMerge [
|
||||||
|
{
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
# globalprotect-openconnect
|
||||||
|
# firefox
|
||||||
|
# fonts
|
||||||
|
custom.sf-mono
|
||||||
|
custom.sf-symbols
|
||||||
|
ultimate-oldschool-pc-font-pack
|
||||||
|
vista-fonts
|
||||||
|
nerd-fonts.ubuntu-mono
|
||||||
|
nerd-fonts.iosevka
|
||||||
|
nerd-fonts.fira-code
|
||||||
|
nerd-fonts.sauce-code-pro
|
||||||
|
nerd-fonts.inconsolata
|
||||||
|
nerd-fonts.inconsolata-go
|
||||||
|
nerd-fonts.droid-sans-mono
|
||||||
|
nerd-fonts.space-mono
|
||||||
|
nerd-fonts.dejavu-sans-mono
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
(lib.mkIf config.custom.gui.default.enable {
|
||||||
|
dconf.settings = {
|
||||||
|
"org/gnome/desktop/interface" = {
|
||||||
|
color-scheme = "prefer-dark";
|
||||||
|
show-battery-percentage = true;
|
||||||
|
clock-format = "12h";
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.custom.gui.vscode.enable {
|
||||||
|
programs.vscode = {
|
||||||
|
enable = true;
|
||||||
|
package = pkgs.vscode;
|
||||||
|
profiles.default = {
|
||||||
|
extensions =
|
||||||
|
with pkgs.vscode-extensions;
|
||||||
|
[
|
||||||
|
bbenoist.nix
|
||||||
|
ms-python.python
|
||||||
|
ms-vscode-remote.remote-ssh
|
||||||
|
]
|
||||||
|
++ pkgs.vscode-utils.extensionsFromVscodeMarketplace [
|
||||||
|
{
|
||||||
|
name = "remote-ssh-edit";
|
||||||
|
publisher = "ms-vscode-remote";
|
||||||
|
version = "0.87.0";
|
||||||
|
sha256 = "sha256-yeX6RAJl07d+SuYyGQFLZNcUzVKAsmPFyTKEn+y3GuM=";
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.custom.gui.firefox.enable {
|
||||||
|
programs.firefox = {
|
||||||
|
enable = true;
|
||||||
|
# package = lib.mkIf custom.gui.darwin.enable pkgs.firefox-bin or pkgs.firefox;
|
||||||
|
package = if config.custom.gui.darwin.enable then pkgs.firefox-bin else pkgs.firefox;
|
||||||
|
};
|
||||||
|
|
||||||
|
home.sessionVariables = lib.mkIf config.custom.gui.darwin.enable {
|
||||||
|
MOZ_LEGACY_PROFILES = "1";
|
||||||
|
};
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.custom.gui.darwin.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
raycast
|
||||||
|
custom.whatsapp-for-mac
|
||||||
|
];
|
||||||
|
})
|
||||||
|
|
||||||
|
(lib.mkIf config.custom.gui.linux.enable {
|
||||||
|
home.packages = with pkgs; [
|
||||||
|
zotero
|
||||||
|
zoom-us
|
||||||
|
spotify
|
||||||
|
slack
|
||||||
|
webex
|
||||||
|
whatsapp-for-linux
|
||||||
|
teams-for-linux
|
||||||
|
skypeforlinux
|
||||||
|
inputs.zen-browser.packages."${system}".twilight
|
||||||
|
chromium
|
||||||
|
arandr
|
||||||
|
seahorse # gnome keyring
|
||||||
|
xfce.thunar
|
||||||
|
xfce.thunar-volman
|
||||||
|
xclip
|
||||||
|
quickemu
|
||||||
|
gf # debugger
|
||||||
|
];
|
||||||
|
})
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -32,18 +32,18 @@
|
||||||
enable = true;
|
enable = true;
|
||||||
scriptPath = ".xsession-hm";
|
scriptPath = ".xsession-hm";
|
||||||
initExtra = ''
|
initExtra = ''
|
||||||
# export GDK_SCALE=2
|
# export GDK_SCALE=2
|
||||||
# export GDK_DPI_SCALE=0.5
|
# export GDK_DPI_SCALE=0.5
|
||||||
export _JAVA_OPTIONS="-Dsun.java2d.uiScale=2"
|
export _JAVA_OPTIONS="-Dsun.java2d.uiScale=2"
|
||||||
export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
export QT_AUTO_SCREEN_SCALE_FACTOR=1
|
||||||
export QT_DEVICE_PIXEL_RATIO=2
|
export QT_DEVICE_PIXEL_RATIO=2
|
||||||
# export XCURSOR_SIZE=128
|
# export XCURSOR_SIZE=128
|
||||||
# ${pkgs.xorg.xsetroot}/bin/xsetroot -cursor_name ${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ/cursors/left_ptr 128 &disown
|
# ${pkgs.xorg.xsetroot}/bin/xsetroot -cursor_name ${pkgs.vanilla-dmz}/share/icons/Vanilla-DMZ/cursors/left_ptr 128 &disown
|
||||||
if test -e $HOME/.Xresources; then
|
if test -e $HOME/.Xresources; then
|
||||||
${pkgs.xorg.xrdb}/bin/xrdb -merge $HOME/.Xresources &disown
|
${pkgs.xorg.xrdb}/bin/xrdb -merge $HOME/.Xresources &disown
|
||||||
fi
|
fi
|
||||||
echo "Xft.dpi: 192" | ${pkgs.xorg.xrdb}/bin/xrdb -merge
|
echo "Xft.dpi: 192" | ${pkgs.xorg.xrdb}/bin/xrdb -merge
|
||||||
'';
|
'';
|
||||||
windowManager.i3 =
|
windowManager.i3 =
|
||||||
let
|
let
|
||||||
modifier = "Mod4";
|
modifier = "Mod4";
|
||||||
|
|
@ -84,125 +84,132 @@
|
||||||
# '';
|
# '';
|
||||||
# };
|
# };
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
enable = true;
|
enable = true;
|
||||||
config = {
|
config = {
|
||||||
inherit modifier terminal;
|
inherit modifier terminal;
|
||||||
keybindings = lib.mkOptionDefault {
|
keybindings = lib.mkOptionDefault {
|
||||||
"${modifier}+h" = "focus left";
|
"${modifier}+h" = "focus left";
|
||||||
"${modifier}+j" = "focus down";
|
"${modifier}+j" = "focus down";
|
||||||
"${modifier}+k" = "focus up";
|
"${modifier}+k" = "focus up";
|
||||||
"${modifier}+l" = "focus right";
|
"${modifier}+l" = "focus right";
|
||||||
"${modifier}+Shift+h" = "move left";
|
"${modifier}+Shift+h" = "move left";
|
||||||
"${modifier}+Shift+j" = "move down";
|
"${modifier}+Shift+j" = "move down";
|
||||||
"${modifier}+Shift+k" = "move up";
|
"${modifier}+Shift+k" = "move up";
|
||||||
"${modifier}+Shift+l" = "move right";
|
"${modifier}+Shift+l" = "move right";
|
||||||
"${modifier}+v" = "split h";
|
"${modifier}+v" = "split h";
|
||||||
"${modifier}+Shift+v" = "split v";
|
"${modifier}+Shift+v" = "split v";
|
||||||
"${modifier}+s" = "layout stacking";
|
"${modifier}+s" = "layout stacking";
|
||||||
"${modifier}+t" = "layout tabbed";
|
"${modifier}+t" = "layout tabbed";
|
||||||
"${modifier}+e" = "layout toggle split";
|
"${modifier}+e" = "layout toggle split";
|
||||||
"${modifier}+p" = "floating toggle";
|
"${modifier}+p" = "floating toggle";
|
||||||
"${modifier}+Shift+p" = "focus mode_toggle";
|
"${modifier}+Shift+p" = "focus mode_toggle";
|
||||||
"${modifier}+Shift+c" = "reload";
|
"${modifier}+Shift+c" = "reload";
|
||||||
"${modifier}+Shift+r" = "restart";
|
"${modifier}+Shift+r" = "restart";
|
||||||
# mode
|
# mode
|
||||||
"${modifier}+r" = ''mode "${resizeMode}"'';
|
"${modifier}+r" = ''mode "${resizeMode}"'';
|
||||||
"${modifier}+Escape" = ''mode "${powerManagementMode}"'';
|
"${modifier}+Escape" = ''mode "${powerManagementMode}"'';
|
||||||
"${modifier}+Shift+Escape" = ''mode "${miscellaneousMode}"'';
|
"${modifier}+Shift+Escape" = ''mode "${miscellaneousMode}"'';
|
||||||
# workspace
|
# workspace
|
||||||
# "${modifier}+Shift+minus" = "move scratchpad";
|
# "${modifier}+Shift+minus" = "move scratchpad";
|
||||||
# "${modifier}+minus" = "scratchpad show";
|
# "${modifier}+minus" = "scratchpad show";
|
||||||
# media
|
# media
|
||||||
"XF86AudioRaiseVolume" = "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ +1% && ${refresh_i3status}";
|
"XF86AudioRaiseVolume" =
|
||||||
"XF86AudioLowerVolume" = "exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ -1% && ${refresh_i3status}";
|
"exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ +1% && ${refresh_i3status}";
|
||||||
"XF86AudioMute" = "exec --no-startup-id ${pactl} set-sink-mute @DEFAULT_SINK@ toggle && ${refresh_i3status}";
|
"XF86AudioLowerVolume" =
|
||||||
"XF86AudioMicMute" = "exec --no-startup-id ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle && ${refresh_i3status}";
|
"exec --no-startup-id ${pactl} set-sink-volume @DEFAULT_SINK@ -1% && ${refresh_i3status}";
|
||||||
"XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause";
|
"XF86AudioMute" =
|
||||||
"XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause";
|
"exec --no-startup-id ${pactl} set-sink-mute @DEFAULT_SINK@ toggle && ${refresh_i3status}";
|
||||||
"XF86AudioNext" = "exec --no-startup-id ${playerctl} next";
|
"XF86AudioMicMute" =
|
||||||
"XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous";
|
"exec --no-startup-id ${pactl} set-source-mute @DEFAULT_SOURCE@ toggle && ${refresh_i3status}";
|
||||||
# brightness
|
"XF86AudioPlay" = "exec --no-startup-id ${playerctl} play-pause";
|
||||||
"XF86MonBrightnessUp" = "exec --no-startup-id ${light} s +10%";
|
"XF86AudioPause" = "exec --no-startup-id ${playerctl} play-pause";
|
||||||
"XF86MonBrightnessDown" = "exec --no-startup-id ${light} s 10%-";
|
"XF86AudioNext" = "exec --no-startup-id ${playerctl} next";
|
||||||
# screenshot
|
"XF86AudioPrev" = "exec --no-startup-id ${playerctl} previous";
|
||||||
"${modifier}+o" = "exec --no-startup-id ${maim} -s ~/Pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png";
|
# brightness
|
||||||
"${modifier}+Shift+o" = "exec --no-startup-id ${maim} -s | ${clipboard} -selection clipboard -t image/png";
|
"XF86MonBrightnessUp" = "exec --no-startup-id ${light} s +10%";
|
||||||
# others
|
"XF86MonBrightnessDown" = "exec --no-startup-id ${light} s 10%-";
|
||||||
"${modifier}+space" = "exec --no-startup-id ${dmenu}";
|
# screenshot
|
||||||
"${modifier}+b" = "exec --no-startup-id ${terminal} -e ${yazi}";
|
"${modifier}+o" =
|
||||||
"${modifier}+z" = "exec --no-startup-id ${boomer}"; # tsoding's zoom
|
"exec --no-startup-id ${maim} -s ~/Pictures/screenshots/$(date +%Y-%m-%d-%H-%M-%S).png";
|
||||||
# "${modifier}+Shift+Return" = "exec ${second_terminal}";
|
"${modifier}+Shift+o" =
|
||||||
# reset
|
"exec --no-startup-id ${maim} -s | ${clipboard} -selection clipboard -t image/png";
|
||||||
"${modifier}+Shift+e" = null;
|
# others
|
||||||
"${modifier}+w" = null;
|
"${modifier}+space" = "exec --no-startup-id ${dmenu}";
|
||||||
"${modifier}+d" = null;
|
"${modifier}+b" = "exec --no-startup-id ${terminal} -e ${yazi}";
|
||||||
};
|
"${modifier}+z" = "exec --no-startup-id ${boomer}"; # tsoding's zoom
|
||||||
modes = let
|
# "${modifier}+Shift+Return" = "exec ${second_terminal}";
|
||||||
|
# reset
|
||||||
|
"${modifier}+Shift+e" = null;
|
||||||
|
"${modifier}+w" = null;
|
||||||
|
"${modifier}+d" = null;
|
||||||
|
};
|
||||||
|
modes =
|
||||||
|
let
|
||||||
exitMode = {
|
exitMode = {
|
||||||
"Escape" = "mode default";
|
"Escape" = "mode default";
|
||||||
"Return" = "mode default";
|
"Return" = "mode default";
|
||||||
};
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
"${resizeMode}" = {
|
"${resizeMode}" = {
|
||||||
"Left" = "resize shrink width 10 px or 10 ppt";
|
"Left" = "resize shrink width 10 px or 10 ppt";
|
||||||
"Down" = "resize grow height 10 px or 10 ppt";
|
"Down" = "resize grow height 10 px or 10 ppt";
|
||||||
"Up" = "resize shrink height 10 px or 10 ppt";
|
"Up" = "resize shrink height 10 px or 10 ppt";
|
||||||
"Right" = "resize grow width 10 px or 10 ppt";
|
"Right" = "resize grow width 10 px or 10 ppt";
|
||||||
"Escape" = "mode default";
|
"Escape" = "mode default";
|
||||||
"Return" = "mode default";
|
"Return" = "mode default";
|
||||||
} // exitMode;
|
} // exitMode;
|
||||||
"${powerManagementMode}" = {
|
"${powerManagementMode}" = {
|
||||||
l = "mode default, exec loginctl lock-session";
|
l = "mode default, exec loginctl lock-session";
|
||||||
e = "mode default, exec loginctl terminate-session $XDG_SESSION_ID";
|
e = "mode default, exec loginctl terminate-session $XDG_SESSION_ID";
|
||||||
s = "mode default, exec systemctl suspend";
|
s = "mode default, exec systemctl suspend";
|
||||||
h = "mode default, exec systemctl hibernate";
|
h = "mode default, exec systemctl hibernate";
|
||||||
"Shift+r" = "mode default, exec systemctl reboot";
|
"Shift+r" = "mode default, exec systemctl reboot";
|
||||||
"Shift+s" = "mode default, exec systemctl poweroff";
|
"Shift+s" = "mode default, exec systemctl poweroff";
|
||||||
} // exitMode;
|
} // exitMode;
|
||||||
"${miscellaneousMode}" = {
|
"${miscellaneousMode}" = {
|
||||||
p = "mode default, exec kill -SIGUSR1 $(pidof dunst)";
|
p = "mode default, exec kill -SIGUSR1 $(pidof dunst)";
|
||||||
c = "mode default, exec kill -SIGUSR2 $(pidof dunst";
|
c = "mode default, exec kill -SIGUSR2 $(pidof dunst";
|
||||||
} // exitMode;
|
} // exitMode;
|
||||||
};
|
};
|
||||||
startup = [
|
startup = [
|
||||||
{
|
{
|
||||||
command = "${pkgs.hsetroot}/bin/hsetroot -solid \"#062329\"";
|
command = "${pkgs.hsetroot}/bin/hsetroot -solid \"#062329\"";
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.dex}/bin/dex --autostart --environment i3";
|
command = "${pkgs.dex}/bin/dex --autostart --environment i3";
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
command = "${pkgs.networkmanagerapplet}/bin/nm-applet";
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.pasystray}/bin/pasystray";
|
command = "${pkgs.pasystray}/bin/pasystray";
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.xss-lock}/bin/xss-lock --transfer-sleep-lock -- i3lock --nofork";
|
command = "${pkgs.xss-lock}/bin/xss-lock --transfer-sleep-lock -- i3lock --nofork";
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.autorandr}/bin/autorandr -c";
|
command = "${pkgs.autorandr}/bin/autorandr -c";
|
||||||
always = false; # Important, run only on first start (will loop otherwise)!
|
always = false; # Important, run only on first start (will loop otherwise)!
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${pkgs.xfce.xfce4-volumed-pulse}/bin/xfce4-volumed-pulse &";
|
command = "${pkgs.xfce.xfce4-volumed-pulse}/bin/xfce4-volumed-pulse &";
|
||||||
always = false;
|
always = false;
|
||||||
notification = false;
|
notification = false;
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
command = "${light} s 25%";
|
command = "${light} s 25%";
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -23,33 +23,33 @@
|
||||||
enableBashIntegration = true;
|
enableBashIntegration = true;
|
||||||
};
|
};
|
||||||
extraConfig = ''
|
extraConfig = ''
|
||||||
modify_font cell_height 1.1
|
modify_font cell_height 1.1
|
||||||
# modify_font cell_width 95%
|
# modify_font cell_width 95%
|
||||||
text_composition_strategy legacy
|
text_composition_strategy legacy
|
||||||
|
|
||||||
background #062329
|
background #062329
|
||||||
foreground #d1b897
|
foreground #d1b897
|
||||||
cursor-color #ffffff
|
cursor-color #ffffff
|
||||||
cursor-text #d1b897
|
cursor-text #d1b897
|
||||||
selection_background #0000ff
|
selection_background #0000ff
|
||||||
selection_foreground #d1b897
|
selection_foreground #d1b897
|
||||||
color0 #062329
|
color0 #062329
|
||||||
# color1 #0b3335
|
# color1 #0b3335
|
||||||
# color2 #0000ff
|
# color2 #0000ff
|
||||||
color3 #44b340
|
color3 #44b340
|
||||||
color4 #8cde94
|
color4 #8cde94
|
||||||
color5 #d1b897
|
color5 #d1b897
|
||||||
color6 #c1d1e3
|
color6 #c1d1e3
|
||||||
color7 #ffffff
|
color7 #ffffff
|
||||||
color8 #626880
|
color8 #626880
|
||||||
color9 #e67172
|
color9 #e67172
|
||||||
color10 #8ec772
|
color10 #8ec772
|
||||||
color11 #d9ba73
|
color11 #d9ba73
|
||||||
color12 #7b9ef0
|
color12 #7b9ef0
|
||||||
color13 #f2a4db
|
color13 #f2a4db
|
||||||
color14 #5abfb5
|
color14 #5abfb5
|
||||||
color15 #b5bfe2
|
color15 #b5bfe2
|
||||||
'';
|
'';
|
||||||
keybindings = {
|
keybindings = {
|
||||||
# "CTRL+GRAVE_ACCENT" = "send_text all \x1b\x1f\x2a\x62\x1f";
|
# "CTRL+GRAVE_ACCENT" = "send_text all \x1b\x1f\x2a\x62\x1f";
|
||||||
# "SHIFT+CTRL+GRAVE_ACCENT" = "send_text all \x1b\x1f\x2a\x63\x1f";
|
# "SHIFT+CTRL+GRAVE_ACCENT" = "send_text all \x1b\x1f\x2a\x63\x1f";
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
hm,
|
hm,
|
||||||
host,
|
host,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -17,14 +18,22 @@
|
||||||
|
|
||||||
nix.enable = false;
|
nix.enable = false;
|
||||||
|
|
||||||
users.users = {
|
users.users.${user} = {
|
||||||
${user} = {
|
home = "/Users/${user}";
|
||||||
home = "/Users/${user}";
|
|
||||||
};
|
|
||||||
};
|
};
|
||||||
|
|
||||||
custom = {
|
custom = {
|
||||||
aerospace.enable = true;
|
aerospace.enable = true;
|
||||||
|
brew = {
|
||||||
|
zen-browser = true;
|
||||||
|
webex = true;
|
||||||
|
slack = true;
|
||||||
|
zoom = true;
|
||||||
|
spotify = true;
|
||||||
|
ghostty = true;
|
||||||
|
ms-office = true;
|
||||||
|
ms-teams = true;
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
hm.custom = {
|
hm.custom = {
|
||||||
|
|
@ -34,6 +43,8 @@
|
||||||
default.enable = true;
|
default.enable = true;
|
||||||
darwin.enable = true;
|
darwin.enable = true;
|
||||||
ghostty.enable = true;
|
ghostty.enable = true;
|
||||||
|
firefox.enable = true;
|
||||||
|
vscode.enable = true;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -12,36 +12,38 @@ let
|
||||||
pkgs = import inputs.nixpkgs {
|
pkgs = import inputs.nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [
|
overlays = [
|
||||||
(import ../overlays {
|
(import ../overlays {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit (pkgs) system;
|
inherit (pkgs) system;
|
||||||
})
|
})
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
lib = (
|
lib = (
|
||||||
import ../lib.nix {
|
import ../lib.nix {
|
||||||
inherit (inputs.nixpkgs) lib;
|
inherit (inputs.nixpkgs) lib;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit (inputs) home-manager;
|
inherit (inputs) home-manager;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
lib.nixosSystem {
|
lib.nixosSystem {
|
||||||
inherit pkgs lib;
|
inherit pkgs lib;
|
||||||
|
|
||||||
specialArgs = specialArgs // {
|
specialArgs = specialArgs // {
|
||||||
inherit host user;
|
inherit host user;
|
||||||
dots = "/home/${user}/dotfiles";
|
dots = "/home/${user}/dotfiles";
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
inputs.disko.nixosModules.default
|
inputs.disko.nixosModules.default
|
||||||
./${host}
|
./${host}
|
||||||
./${host}/hardware.nix
|
./${host}/hardware.nix
|
||||||
../nixos
|
../nixos
|
||||||
../overlays
|
../overlays
|
||||||
({config, ...}: {
|
(
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|
@ -49,7 +51,7 @@ let
|
||||||
extraSpecialArgs = specialArgs // {
|
extraSpecialArgs = specialArgs // {
|
||||||
inherit host user system;
|
inherit host user system;
|
||||||
system-font = "Consolas";
|
system-font = "Consolas";
|
||||||
dots = "/home/${user}/dotfiles";
|
dots = "/home/${user}/dotfiles";
|
||||||
home-dir = config.home-manager.users.${user}.home.homeDirectory;
|
home-dir = config.home-manager.users.${user}.home.homeDirectory;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -58,20 +60,24 @@ let
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
../home
|
../home
|
||||||
] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
|
] ++ lib.optional (builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
}
|
||||||
# alias for home-manager
|
)
|
||||||
(lib.mkAliasOptionModule [ "hm" ] [
|
# alias for home-manager
|
||||||
|
(lib.mkAliasOptionModule
|
||||||
|
[ "hm" ]
|
||||||
|
[
|
||||||
"home-manager"
|
"home-manager"
|
||||||
"users"
|
"users"
|
||||||
user
|
user
|
||||||
])
|
]
|
||||||
inputs.home-manager.nixosModules.home-manager
|
)
|
||||||
inputs.sops-nix.nixosModules.sops
|
inputs.home-manager.nixosModules.home-manager
|
||||||
];
|
inputs.sops-nix.nixosModules.sops
|
||||||
};
|
];
|
||||||
|
};
|
||||||
|
|
||||||
mkDarwinConfiguration =
|
mkDarwinConfiguration =
|
||||||
host: system:
|
host: system:
|
||||||
|
|
@ -79,34 +85,36 @@ let
|
||||||
pkgs = import inputs.nixpkgs {
|
pkgs = import inputs.nixpkgs {
|
||||||
inherit system;
|
inherit system;
|
||||||
config.allowUnfree = true;
|
config.allowUnfree = true;
|
||||||
overlays = [
|
overlays = [
|
||||||
(import ../overlays {
|
(import ../overlays {
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
inherit (pkgs) system;
|
inherit (pkgs) system;
|
||||||
})
|
})
|
||||||
inputs.nixpkgs-firefox-darwin.overlay
|
inputs.nixpkgs-firefox-darwin.overlay
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
lib = (
|
lib = (
|
||||||
import ../lib.nix {
|
import ../lib.nix {
|
||||||
inherit (inputs.nixpkgs) lib;
|
inherit (inputs.nixpkgs) lib;
|
||||||
inherit pkgs;
|
inherit pkgs;
|
||||||
inherit (inputs) home-manager;
|
inherit (inputs) home-manager;
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
in
|
in
|
||||||
inputs.nix-darwin.lib.darwinSystem {
|
inputs.nix-darwin.lib.darwinSystem {
|
||||||
inherit pkgs lib;
|
inherit pkgs lib;
|
||||||
|
|
||||||
specialArgs = specialArgs // {
|
specialArgs = specialArgs // {
|
||||||
inherit host user;
|
inherit host user;
|
||||||
dots = "/Users/${user}/dotfiles";
|
dots = "/Users/${user}/dotfiles";
|
||||||
};
|
};
|
||||||
|
|
||||||
modules = [
|
modules = [
|
||||||
./${host}
|
./${host}
|
||||||
../darwin
|
../darwin
|
||||||
({config, ...}: {
|
(
|
||||||
|
{ config, ... }:
|
||||||
|
{
|
||||||
home-manager = {
|
home-manager = {
|
||||||
useGlobalPkgs = true;
|
useGlobalPkgs = true;
|
||||||
useUserPackages = true;
|
useUserPackages = true;
|
||||||
|
|
@ -115,35 +123,39 @@ let
|
||||||
inherit host user system;
|
inherit host user system;
|
||||||
system-font = "SF Mono";
|
system-font = "SF Mono";
|
||||||
home-dir = config.home-manager.users.${user}.home.homeDirectory;
|
home-dir = config.home-manager.users.${user}.home.homeDirectory;
|
||||||
dots = "/Users/${user}/dotfiles";
|
dots = "/Users/${user}/dotfiles";
|
||||||
};
|
};
|
||||||
|
|
||||||
users.${user} = {
|
users.${user} = {
|
||||||
imports = [
|
imports = [
|
||||||
inputs.nix-index-database.hmModules.nix-index
|
inputs.nix-index-database.hmModules.nix-index
|
||||||
inputs.sops-nix.homeManagerModules.sops
|
inputs.sops-nix.homeManagerModules.sops
|
||||||
inputs.mac-app-util.homeManagerModules.default
|
inputs.mac-app-util.homeManagerModules.default
|
||||||
../home
|
../home
|
||||||
] ++ lib.optional(builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
|
] ++ lib.optional (builtins.pathExists ./${host}/home.nix) ./${host}/home.nix;
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
})
|
}
|
||||||
# alias for home-manager
|
)
|
||||||
(lib.mkAliasOptionModule [ "hm" ] [
|
# alias for home-manager
|
||||||
|
(lib.mkAliasOptionModule
|
||||||
|
[ "hm" ]
|
||||||
|
[
|
||||||
"home-manager"
|
"home-manager"
|
||||||
"users"
|
"users"
|
||||||
user
|
user
|
||||||
])
|
]
|
||||||
inputs.home-manager.darwinModules.home-manager
|
)
|
||||||
inputs.mac-app-util.darwinModules.default
|
inputs.home-manager.darwinModules.home-manager
|
||||||
inputs.nix-homebrew.darwinModules.nix-homebrew
|
inputs.mac-app-util.darwinModules.default
|
||||||
];
|
inputs.nix-homebrew.darwinModules.nix-homebrew
|
||||||
};
|
];
|
||||||
|
};
|
||||||
in
|
in
|
||||||
{
|
{
|
||||||
nixosConfigurations = {
|
nixosConfigurations = {
|
||||||
pickwick = mkNixosConfiguration "pickwick" "x86_64-linux";
|
pickwick = mkNixosConfiguration "pickwick" "x86_64-linux";
|
||||||
lemur = mkNixosConfiguration "lemur" "x86_64-linux";
|
lemur = mkNixosConfiguration "lemur" "x86_64-linux";
|
||||||
};
|
};
|
||||||
darwinConfigurations = {
|
darwinConfigurations = {
|
||||||
dango = mkDarwinConfiguration "dango" "aarch64-darwin";
|
dango = mkDarwinConfiguration "dango" "aarch64-darwin";
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
hm,
|
hm,
|
||||||
host,
|
host,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
];
|
];
|
||||||
|
|
@ -37,8 +38,13 @@
|
||||||
${user} = {
|
${user} = {
|
||||||
initialPassword = "abc123";
|
initialPassword = "abc123";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
openssh.authorizedKeys.keys = [];
|
openssh.authorizedKeys.keys = [ ];
|
||||||
extraGroups = ["wheel" "video" "audio" "networkmanager"];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"audio"
|
||||||
|
"networkmanager"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
format = "vfat";
|
format = "vfat";
|
||||||
mountpoint = "/boot";
|
mountpoint = "/boot";
|
||||||
mountOptions = [
|
mountOptions = [
|
||||||
"defaults"
|
"defaults"
|
||||||
"umask=0077"
|
"umask=0077"
|
||||||
];
|
];
|
||||||
extraArgs = [
|
extraArgs = [
|
||||||
"-n"
|
"-n"
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,27 @@
|
||||||
{ config, lib, pkgs, modulesPath, inputs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
./disko.nix
|
./disko.nix
|
||||||
inputs.nixos-hardware.nixosModules.system76
|
inputs.nixos-hardware.nixosModules.system76
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "usbhid" "sd_mod" "sdhci_pci" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
"sdhci_pci"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-intel" ];
|
boot.kernelModules = [ "kvm-intel" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
|
||||||
|
|
@ -9,7 +9,8 @@
|
||||||
hm,
|
hm,
|
||||||
host,
|
host,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./hardware.nix
|
./hardware.nix
|
||||||
];
|
];
|
||||||
|
|
@ -18,9 +19,9 @@
|
||||||
keyd = {
|
keyd = {
|
||||||
enable = true;
|
enable = true;
|
||||||
ids = [
|
ids = [
|
||||||
"0001:0001:70533846" # framework
|
"0001:0001:70533846" # framework
|
||||||
"3434:06a0:d7dfbeabt" # keychron q10
|
"3434:06a0:d7dfbeabt" # keychron q10
|
||||||
"046d:c339:9f276ca6" # Logitech Pro
|
"046d:c339:9f276ca6" # Logitech Pro
|
||||||
];
|
];
|
||||||
};
|
};
|
||||||
displaymanager.enable = true;
|
displaymanager.enable = true;
|
||||||
|
|
@ -38,8 +39,13 @@
|
||||||
${user} = {
|
${user} = {
|
||||||
initialPassword = "abc123";
|
initialPassword = "abc123";
|
||||||
isNormalUser = true;
|
isNormalUser = true;
|
||||||
openssh.authorizedKeys.keys = [];
|
openssh.authorizedKeys.keys = [ ];
|
||||||
extraGroups = ["wheel" "video" "audio" "networkmanager"];
|
extraGroups = [
|
||||||
|
"wheel"
|
||||||
|
"video"
|
||||||
|
"audio"
|
||||||
|
"networkmanager"
|
||||||
|
];
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -21,8 +21,8 @@
|
||||||
format = "vfat";
|
format = "vfat";
|
||||||
mountpoint = "/boot";
|
mountpoint = "/boot";
|
||||||
mountOptions = [
|
mountOptions = [
|
||||||
"defaults"
|
"defaults"
|
||||||
"umask=0077"
|
"umask=0077"
|
||||||
];
|
];
|
||||||
extraArgs = [
|
extraArgs = [
|
||||||
"-n"
|
"-n"
|
||||||
|
|
|
||||||
|
|
@ -1,14 +1,28 @@
|
||||||
{ config, lib, pkgs, modulesPath, inputs, ... }:
|
{
|
||||||
|
config,
|
||||||
|
lib,
|
||||||
|
pkgs,
|
||||||
|
modulesPath,
|
||||||
|
inputs,
|
||||||
|
...
|
||||||
|
}:
|
||||||
{
|
{
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|
||||||
imports =
|
imports = [
|
||||||
[ (modulesPath + "/installer/scan/not-detected.nix")
|
(modulesPath + "/installer/scan/not-detected.nix")
|
||||||
./disko.nix
|
./disko.nix
|
||||||
inputs.nixos-hardware.nixosModules.framework-13-7040-amd
|
inputs.nixos-hardware.nixosModules.framework-13-7040-amd
|
||||||
];
|
];
|
||||||
|
|
||||||
boot.initrd.availableKernelModules = [ "nvme" "xhci_pci" "thunderbolt" "usb_storage" "usbhid" "sd_mod" ];
|
boot.initrd.availableKernelModules = [
|
||||||
|
"nvme"
|
||||||
|
"xhci_pci"
|
||||||
|
"thunderbolt"
|
||||||
|
"usb_storage"
|
||||||
|
"usbhid"
|
||||||
|
"sd_mod"
|
||||||
|
];
|
||||||
boot.initrd.kernelModules = [ ];
|
boot.initrd.kernelModules = [ ];
|
||||||
boot.kernelModules = [ "kvm-amd" ];
|
boot.kernelModules = [ "kvm-amd" ];
|
||||||
boot.extraModulePackages = [ ];
|
boot.extraModulePackages = [ ];
|
||||||
|
|
|
||||||
|
|
@ -21,12 +21,12 @@
|
||||||
environment.etc = {
|
environment.etc = {
|
||||||
"1password/custom_allowed_browsers" = {
|
"1password/custom_allowed_browsers" = {
|
||||||
text = ''
|
text = ''
|
||||||
zen
|
zen
|
||||||
zen-twilight
|
zen-twilight
|
||||||
.zen-wrapped
|
.zen-wrapped
|
||||||
.firefox-wrapped
|
.firefox-wrapped
|
||||||
firefox
|
firefox
|
||||||
'';
|
'';
|
||||||
mode = "0755";
|
mode = "0755";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -50,5 +50,5 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -6,7 +6,8 @@
|
||||||
system,
|
system,
|
||||||
host,
|
host,
|
||||||
...
|
...
|
||||||
}: {
|
}:
|
||||||
|
{
|
||||||
imports = [
|
imports = [
|
||||||
./1password.nix
|
./1password.nix
|
||||||
./audio.nix
|
./audio.nix
|
||||||
|
|
@ -84,10 +85,13 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages =
|
||||||
vim
|
with pkgs;
|
||||||
htop
|
[
|
||||||
] ++ (lib.attrValues config.custom.shell.packages);
|
vim
|
||||||
|
htop
|
||||||
|
]
|
||||||
|
++ (lib.attrValues config.custom.shell.packages);
|
||||||
|
|
||||||
system.stateVersion = "25.05";
|
system.stateVersion = "25.05";
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -5,49 +5,49 @@
|
||||||
...
|
...
|
||||||
}:
|
}:
|
||||||
{
|
{
|
||||||
options.custom = with lib; {
|
options.custom = with lib; {
|
||||||
displaymanager = {
|
displaymanager = {
|
||||||
enable = mkEnableOption "Enable displaymanager";
|
enable = mkEnableOption "Enable displaymanager";
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
config = lib.mkIf config.custom.displaymanager.enable {
|
config = lib.mkIf config.custom.displaymanager.enable {
|
||||||
services = {
|
services = {
|
||||||
xserver = {
|
xserver = {
|
||||||
enable = true;
|
|
||||||
desktopManager = {
|
|
||||||
xterm.enable = false;
|
|
||||||
};
|
|
||||||
displayManager = {
|
|
||||||
lightdm = {
|
|
||||||
enable = true;
|
|
||||||
greeters.enso = {
|
|
||||||
enable = true;
|
|
||||||
};
|
|
||||||
};
|
|
||||||
session = [
|
|
||||||
{
|
|
||||||
manage = "window";
|
|
||||||
name = "hm";
|
|
||||||
start = ''
|
|
||||||
export CURRENT_XSESSION="hm"
|
|
||||||
${pkgs.stdenv.shell} $HOME/.xsession-hm &
|
|
||||||
waitPID=$!
|
|
||||||
'';
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
|
||||||
windowManager.i3 = {
|
|
||||||
enable = true;
|
enable = true;
|
||||||
extraPackages = with pkgs; [
|
desktopManager = {
|
||||||
dmenu
|
xterm.enable = false;
|
||||||
i3status
|
};
|
||||||
i3lock
|
displayManager = {
|
||||||
];
|
lightdm = {
|
||||||
|
enable = true;
|
||||||
|
greeters.enso = {
|
||||||
|
enable = true;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
session = [
|
||||||
|
{
|
||||||
|
manage = "window";
|
||||||
|
name = "hm";
|
||||||
|
start = ''
|
||||||
|
export CURRENT_XSESSION="hm"
|
||||||
|
${pkgs.stdenv.shell} $HOME/.xsession-hm &
|
||||||
|
waitPID=$!
|
||||||
|
'';
|
||||||
|
}
|
||||||
|
];
|
||||||
|
};
|
||||||
|
windowManager.i3 = {
|
||||||
|
enable = true;
|
||||||
|
extraPackages = with pkgs; [
|
||||||
|
dmenu
|
||||||
|
i3status
|
||||||
|
i3lock
|
||||||
|
];
|
||||||
|
};
|
||||||
};
|
};
|
||||||
|
xserver.xkb.layout = "us";
|
||||||
|
gnome.gnome-keyring.enable = true;
|
||||||
};
|
};
|
||||||
xserver.xkb.layout = "us";
|
|
||||||
gnome.gnome-keyring.enable = true;
|
|
||||||
};
|
};
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -21,56 +21,57 @@
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
config = lib.mkIf config.custom.keyd.enable {
|
config = lib.mkIf config.custom.keyd.enable {
|
||||||
environment.systemPackages = with pkgs; [
|
environment.systemPackages = with pkgs; [
|
||||||
keyd
|
keyd
|
||||||
];
|
];
|
||||||
|
|
||||||
users.groups.keyd = { };
|
users.groups.keyd = { };
|
||||||
services.keyd = let
|
services.keyd =
|
||||||
commonSettings = {
|
let
|
||||||
main = {
|
commonSettings = {
|
||||||
capslock = "layer(capslock)";
|
main = {
|
||||||
insert = "S-insert";
|
capslock = "layer(capslock)";
|
||||||
|
insert = "S-insert";
|
||||||
|
};
|
||||||
|
meta = {
|
||||||
|
w = "macro(C-w)";
|
||||||
|
a = "macro(C-a)";
|
||||||
|
};
|
||||||
|
"capslock:C" = { };
|
||||||
};
|
};
|
||||||
meta = {
|
in
|
||||||
w = "macro(C-w)";
|
{
|
||||||
a = "macro(C-a)";
|
enable = true;
|
||||||
};
|
keyboards = {
|
||||||
"capslock:C" = { };
|
default = {
|
||||||
};
|
ids = [ "*" ];
|
||||||
in {
|
settings = commonSettings;
|
||||||
enable = true;
|
};
|
||||||
keyboards = {
|
workstation = {
|
||||||
default = {
|
ids = config.custom.keyd.ids;
|
||||||
ids = [ "*" ];
|
settings = lib.mkMerge [
|
||||||
settings = commonSettings;
|
commonSettings
|
||||||
};
|
{
|
||||||
workstation = {
|
main = {
|
||||||
ids = config.custom.keyd.ids;
|
leftalt = "layer(meta)";
|
||||||
settings = lib.mkMerge [
|
leftmeta = "layer(alt)";
|
||||||
commonSettings
|
};
|
||||||
{
|
}
|
||||||
main = {
|
];
|
||||||
leftalt = "layer(meta)";
|
};
|
||||||
leftmeta = "layer(alt)";
|
|
||||||
};
|
|
||||||
}
|
|
||||||
];
|
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
|
||||||
|
|
||||||
systemd.services.keyd.serviceConfig.CapabilityBoundingSet = [
|
systemd.services.keyd.serviceConfig.CapabilityBoundingSet = [
|
||||||
"CAP_SETGID"
|
"CAP_SETGID"
|
||||||
];
|
];
|
||||||
|
|
||||||
environment.etc."libinput/local-overrides.quirks".text = ''
|
environment.etc."libinput/local-overrides.quirks".text = ''
|
||||||
[Serial Keyboards]
|
[Serial Keyboards]
|
||||||
MatchUdevType=keyboard
|
MatchUdevType=keyboard
|
||||||
MatchName=keyd virtual keyboard
|
MatchName=keyd virtual keyboard
|
||||||
AttrKeyboardIntegration=internal
|
AttrKeyboardIntegration=internal
|
||||||
'';
|
'';
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -58,7 +58,7 @@
|
||||||
inherit nixPath;
|
inherit nixPath;
|
||||||
channel.enable = false;
|
channel.enable = false;
|
||||||
# required for nix-shell -p to work
|
# required for nix-shell -p to work
|
||||||
registry = lib.mapAttrs (_: flake: {inherit flake;}) flakeInputs;
|
registry = lib.mapAttrs (_: flake: { inherit flake; }) flakeInputs;
|
||||||
# gc = {
|
# gc = {
|
||||||
# # Automatic garbage collection
|
# # Automatic garbage collection
|
||||||
# automatic = true;
|
# automatic = true;
|
||||||
|
|
|
||||||
|
|
@ -1,21 +1,22 @@
|
||||||
{
|
{
|
||||||
inputs,
|
inputs,
|
||||||
...
|
...
|
||||||
}: _: prev: {
|
}:
|
||||||
# include nixpkgs stable
|
_: prev: {
|
||||||
stable = import inputs.nixpkgs-stable {
|
# include nixpkgs stable
|
||||||
inherit (prev.pkgs) system;
|
stable = import inputs.nixpkgs-stable {
|
||||||
config.allowUnfree = true;
|
inherit (prev.pkgs) system;
|
||||||
};
|
config.allowUnfree = true;
|
||||||
|
};
|
||||||
|
|
||||||
# include custom packages
|
# include custom packages
|
||||||
custom =
|
custom =
|
||||||
(prev.custom or { })
|
(prev.custom or { })
|
||||||
// (import ../packages {
|
// (import ../packages {
|
||||||
inherit (prev) pkgs;
|
inherit (prev) pkgs;
|
||||||
inherit inputs;
|
inherit inputs;
|
||||||
});
|
});
|
||||||
|
|
||||||
# use nixfmt-rfc-style as the default
|
# use nixfmt-rfc-style as the default
|
||||||
nixfmt = prev.nixfmt-rfc-style;
|
nixfmt = prev.nixfmt-rfc-style;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,13 @@
|
||||||
{ lib, stdenv, fetchFromGitHub, nim, libX11, libXrandr, libGL, nim-1_0 }:
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
fetchFromGitHub,
|
||||||
|
nim,
|
||||||
|
libX11,
|
||||||
|
libXrandr,
|
||||||
|
libGL,
|
||||||
|
nim-1_0,
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
x11-nim = fetchFromGitHub {
|
x11-nim = fetchFromGitHub {
|
||||||
|
|
@ -13,7 +22,8 @@ let
|
||||||
rev = "8e2e098f82dc5eefd874488c37b5830233cd18f4";
|
rev = "8e2e098f82dc5eefd874488c37b5830233cd18f4";
|
||||||
sha256 = "sha256-v3bMDobYQZqX0anBFIUfZx5q5/vxTHO6PDtKQlf5mgU=";
|
sha256 = "sha256-v3bMDobYQZqX0anBFIUfZx5q5/vxTHO6PDtKQlf5mgU=";
|
||||||
};
|
};
|
||||||
in stdenv.mkDerivation rec {
|
in
|
||||||
|
stdenv.mkDerivation rec {
|
||||||
pname = "boomer";
|
pname = "boomer";
|
||||||
version = "unstable-2024-02-08";
|
version = "unstable-2024-02-08";
|
||||||
src = fetchFromGitHub {
|
src = fetchFromGitHub {
|
||||||
|
|
@ -22,11 +32,23 @@ in stdenv.mkDerivation rec {
|
||||||
rev = "dfd4e1f5514e2a9d7c7a6429c1c0642c2021e792";
|
rev = "dfd4e1f5514e2a9d7c7a6429c1c0642c2021e792";
|
||||||
sha256 = "sha256-o65/VVxttriA5Qqt35lLKkWIZYS7T4VBBuYdAIGUmx8=";
|
sha256 = "sha256-o65/VVxttriA5Qqt35lLKkWIZYS7T4VBBuYdAIGUmx8=";
|
||||||
};
|
};
|
||||||
buildInputs = [ nim-1_0 libX11 libXrandr libGL ];
|
buildInputs = [
|
||||||
|
nim-1_0
|
||||||
|
libX11
|
||||||
|
libXrandr
|
||||||
|
libGL
|
||||||
|
];
|
||||||
buildPhase = ''
|
buildPhase = ''
|
||||||
HOME=$TMPDIR
|
HOME=$TMPDIR
|
||||||
nim -p:${x11-nim}/ -p:${opengl-nim}/src c -d:release src/boomer.nim
|
nim -p:${x11-nim}/ -p:${opengl-nim}/src c -d:release src/boomer.nim
|
||||||
'';
|
'';
|
||||||
installPhase = "install -Dt $out/bin src/boomer";
|
installPhase = "install -Dt $out/bin src/boomer";
|
||||||
fixupPhase = "patchelf --set-rpath ${lib.makeLibraryPath [stdenv.cc.cc libX11 libXrandr libGL]} $out/bin/boomer";
|
fixupPhase = "patchelf --set-rpath ${
|
||||||
|
lib.makeLibraryPath [
|
||||||
|
stdenv.cc.cc
|
||||||
|
libX11
|
||||||
|
libXrandr
|
||||||
|
libGL
|
||||||
|
]
|
||||||
|
} $out/bin/boomer";
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -5,7 +5,8 @@
|
||||||
}:
|
}:
|
||||||
let
|
let
|
||||||
inherit (pkgs) lib callPackage;
|
inherit (pkgs) lib callPackage;
|
||||||
in rec {
|
in
|
||||||
|
rec {
|
||||||
minimal-emacs-d = callPackage ./minimal-emacs-d { };
|
minimal-emacs-d = callPackage ./minimal-emacs-d { };
|
||||||
boomer = callPackage ./boomer { };
|
boomer = callPackage ./boomer { };
|
||||||
nh = callPackage ./nh { };
|
nh = callPackage ./nh { };
|
||||||
|
|
|
||||||
|
|
@ -1,4 +1,8 @@
|
||||||
{ lib, stdenv, pkgs }:
|
{
|
||||||
|
lib,
|
||||||
|
stdenv,
|
||||||
|
pkgs,
|
||||||
|
}:
|
||||||
|
|
||||||
let
|
let
|
||||||
pre-early-init = ./pre-early-init.el;
|
pre-early-init = ./pre-early-init.el;
|
||||||
|
|
|
||||||
|
|
@ -34,15 +34,10 @@ stdenvNoCC.mkDerivation rec {
|
||||||
sourceRoot = ".";
|
sourceRoot = ".";
|
||||||
|
|
||||||
installPhase =
|
installPhase =
|
||||||
''
|
''''
|
||||||
''
|
|
||||||
+ lib.optionalString fonts ''
|
+ lib.optionalString fonts ''
|
||||||
mkdir -p $out/share/fonts/truetype
|
mkdir -p $out/share/fonts/truetype
|
||||||
cp ./Library/Fonts/${
|
cp ./Library/Fonts/${if full then "*" else "SF-Pro.ttf"} $out/share/fonts/truetype
|
||||||
if full
|
|
||||||
then "*"
|
|
||||||
else "SF-Pro.ttf"
|
|
||||||
} $out/share/fonts/truetype
|
|
||||||
''
|
''
|
||||||
+ lib.optionalString app ''
|
+ lib.optionalString app ''
|
||||||
mkdir -p $out/Applications
|
mkdir -p $out/Applications
|
||||||
|
|
@ -51,13 +46,11 @@ stdenvNoCC.mkDerivation rec {
|
||||||
|
|
||||||
meta = {
|
meta = {
|
||||||
description =
|
description =
|
||||||
if app
|
if app then
|
||||||
then "Tool that provides consistent, highly configurable symbols for apps"
|
"Tool that provides consistent, highly configurable symbols for apps"
|
||||||
else "Fonts from SF Symbols";
|
else
|
||||||
|
"Fonts from SF Symbols";
|
||||||
homepage = "https://developer.apple.com/sf-symbols/";
|
homepage = "https://developer.apple.com/sf-symbols/";
|
||||||
platforms =
|
platforms = if app then lib.platforms.darwin else lib.platforms.all;
|
||||||
if app
|
|
||||||
then lib.platforms.darwin
|
|
||||||
else lib.platforms.all;
|
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue