refactor!: port to devos

This commit is contained in:
dusk 2021-05-03 07:48:31 +03:00
parent 6ba96bcbc0
commit d5c1a63ba3
Signed by: dusk
GPG Key ID: 1D8F8FAF2294D6EA
16 changed files with 1274 additions and 1338 deletions

View File

@ -1,25 +1,120 @@
{ {
"nodes": { "nodes": {
"cachix": { "ci-agent": {
"inputs": {
"flake-compat": [
"flake-compat"
],
"nix-darwin": [
"darwin"
],
"nixos-20_09": [
"nixos"
],
"nixos-unstable": [
"override"
],
"pre-commit-hooks-nix": "pre-commit-hooks-nix"
},
"locked": { "locked": {
"lastModified": 1619970086, "lastModified": 1619598097,
"narHash": "sha256-93FzftIPlkQAapwb2Wq0IOktSUCsDW87tcKVWG5YnyQ=", "narHash": "sha256-g8Qha/DlieKpc92yW/2HsucHQ6m+mjJPsc7p6bsBG8s=",
"owner": "nixos", "owner": "hercules-ci",
"repo": "nixpkgs", "repo": "hercules-ci-agent",
"rev": "dc326c78a93862efb30a76216f527a56496e6284", "rev": "43d12815b3d53fb062fa23a2053618c1bccf304c",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "nixos", "owner": "hercules-ci",
"ref": "nixos-20.09", "repo": "hercules-ci-agent",
"repo": "nixpkgs", "type": "github"
}
},
"darwin": {
"inputs": {
"nixpkgs": [
"override"
]
},
"locked": {
"lastModified": 1617693609,
"narHash": "sha256-/+6wm08yHK8mhyljzELD4WE9Gh8XUVbHL0R1TQpZtTQ=",
"owner": "LnL7",
"repo": "nix-darwin",
"rev": "a7492a8c76dcc702d0a65cd820a5f9baa8702684",
"type": "github"
},
"original": {
"owner": "LnL7",
"repo": "nix-darwin",
"type": "github"
}
},
"deploy": {
"inputs": {
"flake-compat": [
"flake-compat"
],
"naersk": [
"naersk"
],
"nixpkgs": [
"override"
],
"utils": [
"utils"
]
},
"locked": {
"lastModified": 1616406726,
"narHash": "sha256-n9zmgxR03QNrvs9/fHewqE0j3SjL7Y+cglBCFu3U3rg=",
"owner": "serokell",
"repo": "deploy-rs",
"rev": "9e405fbc5ab5bacbd271fd78c6b6b6877c4d9f8d",
"type": "github"
},
"original": {
"owner": "serokell",
"repo": "deploy-rs",
"type": "github"
}
},
"devshell": {
"locked": {
"lastModified": 1618523768,
"narHash": "sha256-Gev9da35pHUey3kGz/zrJFc/9ICs++vPCho7qB1mqd8=",
"owner": "numtide",
"repo": "devshell",
"rev": "709fe4d04a9101c9d224ad83f73416dce71baf21",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "devshell",
"type": "github"
}
},
"flake-compat": {
"flake": false,
"locked": {
"lastModified": 1611461076,
"narHash": "sha256-ad++dTtMNeitUIKi1c66aTrVJOSf+mdZTrGrXzjDr6Q=",
"owner": "BBBSnowball",
"repo": "flake-compat",
"rev": "a565cb46bee9fa856a6c15bc9c3bb947fbb784ec",
"type": "github"
},
"original": {
"owner": "BBBSnowball",
"ref": "pr-1",
"repo": "flake-compat",
"type": "github" "type": "github"
} }
}, },
"home": { "home": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixos"
] ]
}, },
"locked": { "locked": {
@ -36,26 +131,10 @@
"type": "github" "type": "github"
} }
}, },
"impermanence": {
"flake": false,
"locked": {
"lastModified": 1611747548,
"narHash": "sha256-2z5wmWda1uI4IkTZrW52jiHq3bzhYLc+GgjvaSd544M=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "58558845bc68dcf2bb32caa80564f7fe3f6cbc61",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"type": "github"
}
},
"mynex": { "mynex": {
"inputs": { "inputs": {
"nixpkgs": [ "nixpkgs": [
"nixpkgs" "nixos"
] ]
}, },
"locked": { "locked": {
@ -72,7 +151,27 @@
"type": "gitlab" "type": "gitlab"
} }
}, },
"nixpkgs": { "naersk": {
"inputs": {
"nixpkgs": [
"override"
]
},
"locked": {
"lastModified": 1618844365,
"narHash": "sha256-Z9t0rr+5OG/ru3jdg3jivfYVU4ydV/nqt8UwIut7uHs=",
"owner": "nmattia",
"repo": "naersk",
"rev": "32e3ba39d9d83098b13720a4384bdda191dd0445",
"type": "github"
},
"original": {
"owner": "nmattia",
"repo": "naersk",
"type": "github"
}
},
"nixos": {
"locked": { "locked": {
"lastModified": 1619464443, "lastModified": 1619464443,
"narHash": "sha256-R7WAb8EnkIJxxaF6GTHUPytjonhB4Zm0iatyWoW169A=", "narHash": "sha256-R7WAb8EnkIJxxaF6GTHUPytjonhB4Zm0iatyWoW169A=",
@ -82,40 +181,132 @@
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "NixOS", "id": "nixpkgs",
"ref": "nixos-unstable", "ref": "nixos-unstable",
"repo": "nixpkgs", "type": "indirect"
"type": "github"
} }
}, },
"nixpkgsWayland": { "nixos-hardware": {
"inputs": {
"cachix": "cachix",
"nixpkgs": [
"nixpkgs"
]
},
"locked": { "locked": {
"lastModified": 1620003682, "lastModified": 1619336929,
"narHash": "sha256-JEtSqDPpvYIrsXiVc8t4CemnKOeFwbSOawWP7CsQpVo=", "narHash": "sha256-joIC2D26jtSbHodR/o8r+5T9XL2hXs6NIp5mVyA4JOc=",
"owner": "colemickens", "owner": "nixos",
"repo": "nixpkgs-wayland", "repo": "nixos-hardware",
"rev": "9354b29893139d6ed98b4374521a3042e1b30626", "rev": "f7540d6c27704ec0fe56ecc8b2a9b663181850b0",
"type": "github" "type": "github"
}, },
"original": { "original": {
"owner": "colemickens", "owner": "nixos",
"repo": "nixpkgs-wayland", "repo": "nixos-hardware",
"type": "github"
}
},
"nixosPersistence": {
"locked": {
"lastModified": 1611747548,
"narHash": "sha256-2z5wmWda1uI4IkTZrW52jiHq3bzhYLc+GgjvaSd544M=",
"owner": "nix-community",
"repo": "impermanence",
"rev": "58558845bc68dcf2bb32caa80564f7fe3f6cbc61",
"type": "github"
},
"original": {
"owner": "nix-community",
"repo": "impermanence",
"type": "github"
}
},
"nur": {
"locked": {
"lastModified": 1620002927,
"narHash": "sha256-M6BL1znBMzxabeXTlQvaZhnWzia4aTmXc5GKBp/XoTc=",
"owner": "nix-community",
"repo": "NUR",
"rev": "167a18afb94ca3356ea0f8caf19f068d07e41857",
"type": "github"
},
"original": {
"id": "nur",
"type": "indirect"
}
},
"override": {
"locked": {
"lastModified": 1619464443,
"narHash": "sha256-R7WAb8EnkIJxxaF6GTHUPytjonhB4Zm0iatyWoW169A=",
"path": "/nix/store/i4c4ph7frbzhfrn4408ghpmayafdmhr3-source",
"rev": "8e4fe32876ca15e3d5eb3ecd3ca0b224417f5f17",
"type": "path"
},
"original": {
"id": "nixpkgs",
"type": "indirect"
}
},
"pkgs": {
"inputs": {
"nixpkgs": [
"nixos"
]
},
"locked": {
"narHash": "sha256-Zs7dc0dNNa0Z3//+Gckxj7SKrMqVovY0xZZ1z8xWnEg=",
"path": "./pkgs",
"type": "path"
},
"original": {
"path": "./pkgs",
"type": "path"
}
},
"pre-commit-hooks-nix": {
"flake": false,
"locked": {
"lastModified": 1617783930,
"narHash": "sha256-SigoU2LWM1fMggqfM9H8XEIvjOjBVQ/wj/zrn02J28c=",
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"rev": "2d169bb1b23f3b71a894a66ea81f45c788943248",
"type": "github"
},
"original": {
"owner": "cachix",
"repo": "pre-commit-hooks.nix",
"type": "github" "type": "github"
} }
}, },
"root": { "root": {
"inputs": { "inputs": {
"ci-agent": "ci-agent",
"darwin": "darwin",
"deploy": "deploy",
"devshell": "devshell",
"flake-compat": "flake-compat",
"home": "home", "home": "home",
"impermanence": "impermanence",
"mynex": "mynex", "mynex": "mynex",
"nixpkgs": "nixpkgs", "naersk": "naersk",
"nixpkgsWayland": "nixpkgsWayland" "nixos": "nixos",
"nixos-hardware": "nixos-hardware",
"nixosPersistence": "nixosPersistence",
"nur": "nur",
"override": "override",
"pkgs": "pkgs",
"utils": "utils"
}
},
"utils": {
"locked": {
"lastModified": 1619345332,
"narHash": "sha256-qHnQkEp1uklKTpx3MvKtY6xzgcqXDsz5nLilbbuL+3A=",
"owner": "numtide",
"repo": "flake-utils",
"rev": "2ebf2558e5bf978c7fb8ea927dfaed8fefab2e28",
"type": "github"
},
"original": {
"owner": "numtide",
"repo": "flake-utils",
"type": "github"
} }
} }
}, },

View File

@ -21,6 +21,11 @@
pkgs.url = "path:./pkgs"; pkgs.url = "path:./pkgs";
pkgs.inputs.nixpkgs.follows = "nixos"; pkgs.inputs.nixpkgs.follows = "nixos";
mynex = {
url = "gitlab:yusdacra/nix-exprs";
inputs.nixpkgs.follows = "nixos";
};
nixosPersistence.url = "github:nix-community/impermanence";
}; };
outputs = inputs@{ self, pkgs, digga, nixos, ci-agent, home, nixos-hardware, nur, ... }: outputs = inputs@{ self, pkgs, digga, nixos, ci-agent, home, nixos-hardware, nur, ... }:

View File

@ -1,58 +0,0 @@
inputs@{ home, impermanence, mynex, nixpkgs, self, pkgs, system, ... }:
let
utils = import ../lib/utils.nix { inherit lib pkgs; };
inherit (nixpkgs) lib;
inherit (utils) recImport;
config = hostName:
lib.nixosSystem {
inherit system;
specialArgs = {
usr = { inherit utils; };
util = utils;
nixosPersistence = "${impermanence}/nixos.nix";
inputs = inputs;
};
modules =
let
inherit (home.nixosModules) home-manager;
inherit (mynex.nixosModules) security networking;
core = ../profiles/core.nix;
global = {
networking.hostName = hostName;
nix = {
nixPath = [
"nixpkgs=${nixpkgs}"
"nixos-config=/etc/nixos/configuration.nix"
"nixpkgs-overlays=/etc/nixos/overlays"
];
binaryCachePublicKeys = [
"cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY="
"nixpkgs-wayland.cachix.org-1:3lwxaILxMRkVhehr5StQprHdEo4IrE8sRho9R9HOLYA="
];
binaryCaches = [
"https://cache.nixos.org"
"https://nixpkgs-wayland.cachix.org"
];
};
nixpkgs = { inherit pkgs; };
};
local = import "${toString ./.}/${hostName}.nix";
in
[ core global local home-manager security networking ];
};
hosts = recImport {
dir = ./.;
_import = config;
};
in
hosts

View File

@ -1,4 +1,4 @@
{ config, lib, pkgs, modulesPath, nixosPersistence, ... }: { config, lib, pkgs, modulesPath, suites, ... }:
let let
btrfsPartPath = "/dev/disk/by-label/NIXOS"; btrfsPartPath = "/dev/disk/by-label/NIXOS";
btrfsOptions = [ "compress-force=zstd" "noatime" ]; btrfsOptions = [ "compress-force=zstd" "noatime" ];
@ -32,13 +32,9 @@ let
''; '';
in in
{ {
imports = [ imports = suites.work ++ [
../users/patriot ../profiles/network/networkmanager
../users/root
../profiles/network/networkmanager.nix
../profiles/develop
(modulesPath + "/installer/scan/not-detected.nix") (modulesPath + "/installer/scan/not-detected.nix")
nixosPersistence
]; ];
boot = { boot = {
@ -184,7 +180,7 @@ in
postgresql = { postgresql = {
enable = false; enable = false;
enableTCPIP = true; enableTCPIP = true;
authentication = pkgs.lib.mkOverride 10 '' authentication = lib.mkOverride 10 ''
local all all trust local all all trust
host all all 0.0.0.0/0 md5 host all all 0.0.0.0/0 md5
''; '';

View File

@ -1,12 +0,0 @@
{ modulesPath, ... }: {
imports = [
# passwd is nixos by default
../users/nixos
../users/root
"${modulesPath}/installer/cd-dvd/iso-image.nix"
];
isoImage.makeEfiBootable = true;
isoImage.makeUsbBootable = true;
networking.networkmanager.enable = true;
}

View File

@ -1,29 +0,0 @@
{ lib, pkgs, ... }:
let
inherit (builtins) attrNames isAttrs isInt readDir toJSON;
inherit (lib) filterAttrs hasSuffix mapAttrs' nameValuePair removeSuffix;
# mapFilterAttrs ::
# (name -> value -> bool )
# (name -> value -> { name = any; value = any; })
# attrs
mapFilterAttrs = seive: f: attrs: filterAttrs seive (mapAttrs' f attrs);
in
{
inherit mapFilterAttrs;
recImport = { dir, _import ? base: import "${dir}/${base}.nix" }:
mapFilterAttrs (_: v: v != null)
(n: v:
if n != "default.nix" && hasSuffix ".nix" n && v == "regular"
then
let name = removeSuffix ".nix" n; in nameValuePair (name) (_import name)
else
nameValuePair ("") (null))
(readDir dir);
pkgBin = name: "${pkgs."${name}"}/bin/${name}";
}

View File

@ -1,14 +0,0 @@
final: prev: {
hydrus = prev.hydrus.overrideAttrs (old:
let version = "436"; in
{
inherit version;
src = prev.fetchFromGitHub {
owner = "hydrusnetwork";
repo = old.pname;
rev = "v${version}";
sha256 = "sha256-FXm8VUEY0OZ6/dc/qNwOXekhv5H2C9jjg/eNDoMvMn0=";
};
});
}

View File

@ -1,144 +0,0 @@
{ config, lib, pkgs, util, inputs, ... }:
let
inherit (util) pkgBin;
inherit (lib) fileContents mkIf;
in
{
imports = [ ../local/locale.nix ];
boot = {
tmpOnTmpfs = true;
loader.systemd-boot.configurationLimit = 10;
};
console.font = "7x14";
environment =
let
coreBin = v: "${pkgs.coreutils}/bin/${v}";
nixBin = "${config.nix.package}/bin/nix";
in
{
systemPackages = with pkgs; [
bat
exa
ripgrep
curl
jq
git
gptfdisk
iputils
lm_sensors
mkpasswd
ntfs3g
zoxide
bottom
tealdeer
amber
unzip
unrar
grit
hydra-check
nix-index
];
shellAliases =
let ifSudo = string: mkIf config.security.sudo.enable string;
in
{
gtw = "${pkgBin "grit"} tree wnv";
gtwa = "${pkgBin "grit"} add -p wnv";
gt = pkgBin "grit";
g = pkgBin "git";
grep = "${pkgs.ripgrep}/bin/rg";
cat = "${pkgBin "bat"} -pp --theme=base16";
c = "${pkgBin "bat"} -pp --theme=base16";
df = "${coreBin "df"} -h";
free = "${pkgs.procps}/bin/free -h";
ls = pkgBin "exa";
l = "${pkgBin "exa"} -lhg --git";
la = "${pkgBin "exa"} -lhg --git -a";
t = "${pkgBin "exa"} -lhg --git -T";
ta = "${pkgBin "exa"} -lhg --git -a -T";
n = nixBin;
nf = "${nixBin} flake";
nfc = "${nixBin} flake check";
nfu = "${nixBin} flake update";
nfua = "${nixBin} flake update --recreate-lock-file";
nfs = "${nixBin} flake show";
np = "${nixBin} profile";
npl = "${nixBin} profile info";
npi = "${nixBin} profile install";
npr = "${nixBin} profile remove";
nsh = "${nixBin} shell";
nsr = "${nixBin} search";
nsrp = "${nixBin} search nixpkgs";
ndev = "${nixBin} develop";
nosce = "cd /etc/nixos";
nosr = ifSudo "sudo nixos-rebuild --fast";
nosrs = ifSudo "sudo nixos-rebuild switch";
nosrb = ifSudo "sudo nixos-rebuild boot";
nosrt = ifSudo "sudo nixos-rebuild test";
ncg = ifSudo "sudo nix-collect-garbage";
ncgdo = ifSudo "sudo nix-collect-garbage --delete-old";
top = "${pkgs.bottom}/bin/btm";
myip =
"${pkgs.dnsutils}/bin/dig +short myip.opendns.com @208.67.222.222 2>&1";
sys-repl =
"source /etc/set-environment && ${nixBin} repl ${./..}/repl.nix";
};
};
nix =
let
flakes = lib.filterAttrs (name: value: value ? outputs) inputs;
nixPath = lib.mapAttrsToList
(name: _: "${name}=${inputs.${name}}")
flakes;
registry = builtins.mapAttrs
(name: v: { flake = v; })
flakes;
in
{
package = pkgs.nixFlakes;
autoOptimiseStore = true;
optimise.automatic = true;
allowedUsers = [ "@wheel" ];
trustedUsers = [ "root" "@wheel" ];
extraOptions = ''
experimental-features = nix-command flakes ca-references
'';
nixPath = nixPath ++ [ "repl=${./..}/repl.nix" ];
inherit registry;
};
system.activationScripts.diff = ''
${pkgs.nixUnstable}/bin/nix store \
--experimental-features 'nix-command' \
diff-closures /run/current-system "$systemConfig"
'';
# security = {
# hideProcessInformation = true;
# protectKernelImage = true;
# };
programs.command-not-found.enable = false;
home-manager.useGlobalPkgs = true;
home-manager.useUserPackages = true;
users.mutableUsers = false;
}

View File

@ -1,13 +1,24 @@
{ self, config, lib, pkgs, ... }: { self, config, pkgs, ... }:
let inherit (lib) fileContents; let
lib = pkgs.lib;
inherit (lib) fileContents mkIf;
pkgBin = lib.dev.pkgBinNoDep pkgs;
coreBin = v: "${pkgs.coreutils}/bin/${v}";
nixBin = "${config.nix.package}/bin/nix";
in in
{ {
imports = [ ../cachix ]; imports = [ ../cachix ../../locale ];
nix.systemFeatures = [ "nixos-test" "benchmark" "big-parallel" "kvm" ]; boot = {
tmpOnTmpfs = true;
loader.systemd-boot.configurationLimit = 10;
};
console.font = "7x14";
environment = { environment = {
systemPackages = with pkgs; [ systemPackages = with pkgs; [
binutils binutils
coreutils coreutils
@ -31,46 +42,72 @@ in
usbutils usbutils
utillinux utillinux
whois whois
bat
exa
git
lm_sensors
mkpasswd
ntfs3g
zoxide
bottom
amber
unzip
unrar
grit
hydra-check
nix-index
]; ];
shellInit = ''
export STARSHIP_CONFIG=${
pkgs.writeText "starship.toml"
(fileContents ./starship.toml)
}
'';
shellAliases = shellAliases =
let ifSudo = lib.mkIf config.security.sudo.enable; let ifSudo = string: mkIf config.security.sudo.enable string;
in in
{ {
# quick cd gtw = "${pkgBin "grit"} tree wnv";
".." = "cd .."; gtwa = "${pkgBin "grit"} add -p wnv";
"..." = "cd ../.."; gt = pkgBin "grit";
"...." = "cd ../../..";
"....." = "cd ../../../..";
# git g = pkgBin "git";
g = "git";
# grep grep = "${pkgs.ripgrep}/bin/rg";
grep = "rg"; cat = "${pkgBin "bat"} -pp --theme=base16";
gi = "grep -i"; c = "${pkgBin "bat"} -pp --theme=base16";
# internet ip df = "${coreBin "df"} -h";
myip = "dig +short myip.opendns.com @208.67.222.222 2>&1"; free = "${pkgs.procps}/bin/free -h";
# nix ls = pkgBin "exa";
n = "nix"; l = "${pkgBin "exa"} -lhg --git";
np = "n profile"; la = "${pkgBin "exa"} -lhg --git -a";
ni = "np install"; t = "${pkgBin "exa"} -lhg --git -T";
nr = "np remove"; ta = "${pkgBin "exa"} -lhg --git -a -T";
ns = "n search --no-update-lock-file";
nf = "n flake"; n = nixBin;
nepl = "n repl '<nixpkgs>'"; nf = "${nixBin} flake";
srch = "ns nixos"; nfc = "${nixBin} flake check";
orch = "ns override"; nfu = "${nixBin} flake update";
nrb = ifSudo "sudo nixos-rebuild"; nfua = "${nixBin} flake update --recreate-lock-file";
nfs = "${nixBin} flake show";
np = "${nixBin} profile";
npl = "${nixBin} profile info";
npi = "${nixBin} profile install";
npr = "${nixBin} profile remove";
nsh = "${nixBin} shell";
nsr = "${nixBin} search";
nsrp = "${nixBin} search nixpkgs";
ndev = "${nixBin} develop";
nosce = "cd /etc/nixos";
nosr = ifSudo "sudo nixos-rebuild --fast";
nosrs = ifSudo "sudo nixos-rebuild switch";
nosrb = ifSudo "sudo nixos-rebuild boot";
nosrt = ifSudo "sudo nixos-rebuild test";
ncg = ifSudo "sudo nix-collect-garbage";
ncgdo = ifSudo "sudo nix-collect-garbage --delete-old";
top = "${pkgs.bottom}/bin/btm";
myip =
"${pkgs.dnsutils}/bin/dig +short myip.opendns.com @208.67.222.222 2>&1";
mn = '' mn = ''
manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix manix "" | grep '^# ' | sed 's/^# \(.*\) (.*/\1/;s/ (.*//;s/^# //' | sk --preview="manix '{}'" | xargs manix
''; '';
@ -95,54 +132,33 @@ in
up = ifSudo "s systemctl start"; up = ifSudo "s systemctl start";
dn = ifSudo "s systemctl stop"; dn = ifSudo "s systemctl stop";
jtl = "journalctl"; jtl = "journalctl";
}; };
}; };
fonts = { system.activationScripts.diff = ''
fonts = with pkgs; [ powerline-fonts dejavu_fonts ]; ${pkgs.nixUnstable}/bin/nix store \
--experimental-features 'nix-command' \
fontconfig.defaultFonts = { diff-closures /run/current-system "$systemConfig"
'';
monospace = [ "DejaVu Sans Mono for Powerline" ];
sansSerif = [ "DejaVu Sans" ];
};
};
nix = { nix = {
autoOptimiseStore = true; autoOptimiseStore = true;
gc.automatic = true; gc.automatic = true;
optimise.automatic = true; optimise.automatic = true;
useSandbox = true; useSandbox = true;
allowedUsers = [ "@wheel" ]; allowedUsers = [ "@wheel" ];
trustedUsers = [ "root" "@wheel" ]; trustedUsers = [ "root" "@wheel" ];
extraOptions = '' extraOptions = ''
min-free = 536870912 min-free = 536870912
keep-outputs = true keep-outputs = true
keep-derivations = true keep-derivations = true
fallback = true fallback = true
''; '';
}; };
programs.bash = { programs.command-not-found.enable = false;
promptInit = '' home-manager.useGlobalPkgs = true;
eval "$(${pkgs.starship}/bin/starship init bash)" users.mutableUsers = false;
'';
interactiveShellInit = ''
eval "$(${pkgs.direnv}/bin/direnv hook bash)"
'';
};
services.earlyoom.enable = true; services.earlyoom.enable = true;
} }

View File

@ -7,17 +7,4 @@
noarp noarp
nodelay nodelay
''; '';
/*systemd.network = {
enable = true;
networks = {
internet0 = {
matchConfig = { Name = "enp6s0"; };
networkConfig = {
Address = "192.168.1.33";
Gateway = "192.168.1.255";
};
};
};
};*/
} }

View File

@ -1,5 +1,5 @@
{ {
imports = [ ./dns ]; imports = [ ../dns ];
networking.networkmanager.enable = true; networking.networkmanager.enable = true;
} }

View File

@ -1,5 +0,0 @@
let
sysFlake = builtins.getFlake (toString ./.);
nixpkgs = import <nixpkgs> { };
in
{ inherit sysFlake; } // nixpkgs

View File

@ -1 +1,2 @@
[ ] [ ]

View File

@ -1,5 +1,14 @@
{ config, pkgs, ... }: { { config, pkgs, ... }:
imports = [ ./home.nix ]; let
lib = pkgs.lib;
inherit (lib) mapAttrs' nameValuePair;
inherit (builtins) readDir fetchGit;
pkgBin = lib.dev.pkgBinNoDep pkgs;
nixosConfig = config;
in
{
users.users.patriot = { users.users.patriot = {
isNormalUser = true; isNormalUser = true;
@ -73,4 +82,936 @@
NetworkManager-wait-online.enable = false; NetworkManager-wait-online.enable = false;
}; };
}; };
home-manager.users.patriot =
{ config, pkgs, ... }:
let
name = "Yusuf Bera Ertan";
email = "y.bera003.06@protonmail.com";
font = "Iosevka Term";
fontSize = 10;
fontComb = "${font} ${toString fontSize}";
fontPackage = pkgs.iosevka;
kideSrc = fetchGit {
url = "https://gitlab.com/yusdacra/kide.git";
rev = "778d68df0cfcb96d6113bfe6a59e5dfc71ee7d82";
submodules = true;
};
kideFiles =
mapAttrs' (n: _: nameValuePair "kak/${n}" { source = "${kideSrc}/${n}"; })
(readDir kideSrc);
kideDeps = with pkgs; [
fzf
bat
ripgrep
universal-ctags
kak-lsp
wl-clipboard
xclip
shellcheck
perl
socat
gdb
kcr
jq
file
];
chromiumWayland =
let
flags = [
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
"--enable-vulkan"
"--enable-webrtc-pipewire-capturer"
"--ignore-gpu-blocklist"
"--enable-gpu-rasterization"
"--enable-zero-copy"
"--disable-gpu-driver-bug-workarounds"
];
in
pkgs.writeScriptBin "chromium-wayland" ''
#!${pkgs.stdenv.shell}
chromium ${lib.concatStringsSep " " flags}
'';
chromiumWaylandPkg = with pkgs;
let name = "chromium-wayland"; in
stdenv.mkDerivation {
pname = name;
version = chromium.version;
nativeBuildInputs = [ copyDesktopItems ];
desktopItems = [
(makeDesktopItem {
inherit name;
exec = name;
desktopName = "Chromium Wayland";
genericName = "Web Browser";
})
];
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out/bin
ln -s ${chromiumWayland}/bin/chromium-wayland $out/bin/chromium-wayland
'';
};
colorSchemeLight = {
primary = {
normal = {
background = "fbf3db";
foreground = "53676d";
};
bright = {
background = "d5cdb6";
foreground = "3a4d53";
};
};
normal = {
black = "ece3cc";
gray = "5b5b5b";
red = "d2212d";
green = "489100";
yellow = "ad8900";
blue = "0072d4";
magenta = "ca4898";
cyan = "009c8f";
white = "909995";
};
bright = {
black = "d5cdb6";
gray = "7b7b7b";
red = "cc1729";
green = "428b00";
yellow = "a78300";
blue = "006dce";
magenta = "c44392";
cyan = "00978a";
white = "3a4d53";
};
};
colorSchemeDark =
let
normal = {
black = "252525";
gray = "5b5b5b";
red = "ed4a46";
green = "70b433";
yellow = "dbb32d";
blue = "368aeb";
magenta = "eb6eb7";
cyan = "3fc5b7";
white = "777777";
};
bright = {
black = "3b3b3b";
gray = "7b7b7b";
red = "ff5e56";
green = "83c746";
yellow = "efc541";
blue = "4f9cfe";
magenta = "ff81ca";
cyan = "56d8c9";
white = "dedede";
};
in
{
inherit normal bright;
primary = {
normal = {
background = "181818";
foreground = "b9b9b9";
};
bright = {
background = bright.black;
foreground = bright.white;
};
};
};
colorScheme =
# if builtins.pathExists ./light then colorSchemeLight else colorSchemeDark;
colorSchemeDark;
bgColor = colorScheme.primary.normal.background;
fgColor = colorScheme.primary.bright.foreground;
acColor = colorScheme.normal.yellow;
acColor2 = colorScheme.normal.magenta;
alacrittyColors = {
primary = {
background = "0x${bgColor}";
foreground = "0x${fgColor}";
};
normal = lib.mapAttrs (_: v: "0x${v}") colorScheme.normal;
bright = lib.mapAttrs (_: v: "0x${v}") colorScheme.bright;
};
# sway attrs reused
focusedWorkspace = {
background = "#${bgColor}";
border = "#${acColor}";
text = "#${acColor}";
};
activeWorkspace = {
background = "#${bgColor}";
border = "#${colorScheme.primary.bright.background}";
text = "#${fgColor}";
};
inactiveWorkspace = {
background = "#${bgColor}";
border = "#${bgColor}";
text = "#${fgColor}";
};
urgentWorkspace = {
background = "#${bgColor}";
border = "#${acColor2}";
text = "#${acColor2}";
};
addIndSway = x: {
background = x.background;
border = x.border;
childBorder = x.border;
text = x.text;
indicator = "#111111"; # don't care
};
fonts = [ fontComb ];
extraEnv = ''
# export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_PLATFORM_PLUGIN=qt5ct
'';
in
{
imports = [ ../profiles/hikari.nix ];
# needs to be fixed to use nix profile???
/*gtk = {
enable = false;
font = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans 12";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus Dark";
};
theme = {
package = pkgs.numix-gtk-theme;
name = "Numix Dark";
};
};
qt = {
enable = false;
style = {
package = pkgs.adwaita-qt;
name = "adwaita-dark";
};
};*/
fonts.fontconfig.enable = true;
home = {
homeDirectory = nixosConfig.users.users.patriot.home;
packages = with pkgs;
[
# Font stuff
fontPackage
noto-fonts-cjk
noto-fonts-emoji-blob-bin
font-awesome
(nerdfonts.override { fonts = [ "Iosevka" ]; })
# Programs
discord
ripcord
audacity
krita
gimp
kdenlive
gnome3.seahorse
gnome3.gnome-boxes
wine-staging
cachix
chromiumWaylandPkg
appimage-run
bitwarden
pfetch
neofetch
gnupg
imv
mpv
youtube-dl
ffmpeg
mupdf
transmission-qt
steam-run
lutris
xdg_utils
tagref
libreoffice-fresh
mako
hydrus
musikcube
qt5ct
phantomstyle
papirus-icon-theme
pcmanfm-qt
] ++ kideDeps;
};
wayland.windowManager = {
hikari = {
enable = false;
inherit font;
};
sway = {
enable = true;
extraSessionCommands = extraEnv;
wrapperFeatures.gtk = true;
config = {
inherit fonts;
bars = [{
command = "${pkgBin "waybar"}";
}];
colors = {
background = "#${bgColor}";
focused = addIndSway focusedWorkspace;
focusedInactive = addIndSway inactiveWorkspace;
unfocused = addIndSway activeWorkspace;
urgent = addIndSway urgentWorkspace;
};
gaps.smartBorders = "on";
menu = "${pkgBin "rofi"} -show drun | ${pkgs.sway}/bin/swaymsg --";
modifier = "Mod4";
terminal = pkgBin "alacritty";
keybindings =
let
mod = config.wayland.windowManager.sway.config.modifier;
cat = pkgs.coreutils + "/bin/cat";
grim = pkgBin "grim";
slurp = pkgBin "slurp";
pactl = pkgs.pulseaudio + "/bin/pactl";
playerctl = pkgBin "playerctl";
wf-recorder = pkgBin "wf-recorder";
wl-copy = pkgs.wl-clipboard + "/bin/wl-copy";
wl-paste = pkgs.wl-clipboard + "/bin/wl-paste";
shotFile = config.home.homeDirectory
+ "/shots/shot_$(date '+%Y_%m_%d_%H_%M')";
in
lib.mkOptionDefault {
"${mod}+q" = "kill";
"${mod}+Shift+e" = "exit";
"${mod}+Shift+r" = "reload";
# Screenshot and copy it to clipboard
"Mod1+s" = ''
exec export SFILE="${shotFile}.png" && ${grim} "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Save selected area as a picture and copy it to clipboard
"Mod1+Shift+s" = ''
exec export SFILE="${shotFile}.png" && ${grim} -g "$(${slurp})" "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Record screen
"Mod1+r" = ''exec ${wf-recorder} -f "${shotFile}.mp4"'';
# Record an area
"Mod1+Shift+r" =
''exec ${wf-recorder} -g "$(${slurp})" -f "${shotFile}.mp4"'';
# Stop recording
"Mod1+c" = "exec pkill -INT wf-recorder";
"XF86AudioRaiseVolume" = "exec ${pactl} set-sink-volume 0 +5%";
"XF86AudioLowerVolume" = "exec ${pactl} set-sink-volume 0 -5%";
"XF86AudioMute" = "exec ${pactl} set-sink-mute 0 toggle";
"XF86AudioPlay" = "exec ${playerctl} play-pause";
"XF86AudioPrev" = "exec ${playerctl} previous";
"XF86AudioNext" = "exec ${playerctl} next";
"XF86AudioStop" = "exec ${playerctl} stop";
};
input = {
"*" = {
xkb_layout = nixosConfig.services.xserver.layout;
accel_profile = "flat";
};
};
output = {
"*" = {
bg = config.home.homeDirectory + "/wallpaper.png" + " fill";
};
};
};
};
};
programs = {
alacritty = {
enable = true;
settings = {
shell = {
program = "${pkgs.tmux}/bin/tmux";
args = [ "attach" ];
};
font = {
normal = { family = font; };
size = fontSize;
};
colors = alacrittyColors;
};
};
tmux = {
enable = true;
newSession = true;
secureSocket = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shortcut = "a";
extraConfig = ''
set -g default-terminal "alacritty"
set -ga terminal-overrides ",alacritty:Tc"
set -g status off
'';
};
chromium = {
enable = true;
extensions = [
"gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock
"nngceckbapebfimnlniiiahkandclblb" # bitwarden
"ldpochfccmkkmhdbclfhpagapcfdljkj" # decentraleyes
"annfbnbieaamhaimclajlajpijgkdblo" # dark theme
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
"hlepfoohegkhhmjieoechaddaejaokhf" # github refined
"pmcmeagblkinmogikoikkdjiligflglb" # privacy redirect
];
};
qutebrowser = {
enable = false;
settings = {
content.javascript.enabled = false;
colors.webpage.darkmode.enabled = false;
tabs = {
show = "multiple";
tabs_are_windows = true;
};
};
extraConfig =
let
domains = [
"discord.com"
"github.com"
"gitlab.com"
"nixos.org"
"protonmail.com"
"bitwarden.com"
"duckduckgo.com"
"youtube.com"
"docker.com"
];
enableJsForDomain = d: ''
config.set('content.javascript.enabled', True, 'https://*.${d}')
'';
in
''
${lib.concatStrings (map enableJsForDomain domains)}
'';
};
git = {
enable = true;
aliases = {
a = "add";
b = "branch";
c = "commit";
d = "diff";
l = "log";
s = "status";
co = "checkout";
dc = "diff --cached";
qc = "commit -am";
pl = "pull";
ps = "push";
rb = "rebase";
rs = "restore";
rv = "revert";
ss = "stash";
rst = "reset";
rss = "restore --staged";
ssp = "stash pop";
ssl = "stash list";
ssd = "stash drop";
};
extraConfig = { pull.rebase = true; };
lfs.enable = true;
signing = {
key = "E1C119F91F4CAE53E8445CAFBB57FCE7E35984F6";
signByDefault = true;
};
userName = name;
userEmail = email;
};
ssh = {
enable = true;
compression = true;
hashKnownHosts = true;
userKnownHostsFile = "~/.local/share/ssh/known-hosts";
# Only needed for darcs hub
# extraConfig = ''
# Host hub.darcs.net
# ControlMaster no
# ForwardAgent no
# ForwardX11 no
# Ciphers +aes256-cbc
# MACs +hmac-sha1
# '';
};
zsh = {
enable = true;
autocd = true;
enableVteIntegration = true;
enableAutosuggestions = true;
enableCompletion = true;
plugins =
let
fast-syntax-highlighting =
let name = "fast-syntax-highlighting"; in
{
inherit name;
src = pkgs."zsh-${name}".out;
};
per-directory-history = {
name = "per-directory-history";
src = pkgs.fetchFromGitHub {
owner = "jimhester";
repo = "per-directory-history";
rev = "d2e291dd6434e340d9be0e15e1f5b94f32771c06";
hash = "sha256-VHRgrVCqzILqOes8VXGjSgLek38BFs9eijmp0JHtD5Q=";
};
};
in
[ fast-syntax-highlighting per-directory-history ];
# xdg compliant
dotDir = ".config/zsh";
history.path = ".local/share/zsh/history";
envExtra = extraEnv;
loginExtra =
''
if [ "$(${pkgs.coreutils}/bin/tty)" = "/dev/tty1" ]; then
exec sway
fi
'';
initExtra = ''
export TERM=alacritty
function tomp4 () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 -c:v libx264 -preset slow -crf 30 -c:a aac -b:a 128k "$1.mp4"
}
function topng () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 "$1.png"
}
bindkey "$terminfo[kRIT5]" forward-word
bindkey "$terminfo[kLFT5]" backward-word
zstyle ':completion:*' menu select
eval "$(zoxide init zsh)"
'';
shellAliases = nixosConfig.environment.shellAliases // {
rember = ''
${pkgs.kakoune-unwrapped}/bin/kak -e "try %(gtd-jump-today)" "${config.home.homeDirectory}/rember/stuff$(date '+_%m_%Y').gtd"
'';
};
};
starship = {
enable = true;
settings = {
add_newline = false;
character.symbol = ">";
directory = {
truncation_length = 2;
truncate_to_repo = false;
};
};
};
direnv = {
enable = true;
enableNixDirenvIntegration = true;
};
fzf.enable = true;
rofi =
let
bgc = "#${bgColor}";
fgc = "#${fgColor}";
acc = "#${acColor}";
in
{
enable = true;
colors = {
window = {
background = bgc;
border = bgc;
separator = bgc;
};
rows = {
normal = {
background = bgc;
foreground = fgc;
backgroundAlt = bgc;
highlight = {
background = bgc;
foreground = acc;
};
};
};
};
font = fontComb;
separator = "none";
terminal = pkgBin "alacritty";
};
waybar =
let
swayEnabled = config.wayland.windowManager.sway.enable;
in
{
enable = swayEnabled || config.wayland.windowManager.hikari.enable;
settings = [{
layer = "top";
position = "top";
modules-left = if swayEnabled then [ "sway/workspaces" ] else [ ];
modules-center = if swayEnabled then [ "sway/window" ] else [ ];
modules-right =
[ "pulseaudio" "cpu" "memory" "temperature" "clock" "tray" ];
modules = {
"tray" = { spacing = 8; };
"cpu" = { format = "/cpu {usage}/"; };
"memory" = { format = "/mem {}/"; };
"temperature" = {
hwmon-path = "/sys/class/hwmon/hwmon1/temp2_input";
format = "/tmp {temperatureC}C/";
};
"pulseaudio" = {
format = "/vol {volume}/ {format_source}";
format-bluetooth = "/volb {volume}/ {format_source}";
format-bluetooth-muted = "/volb/ {format_source}";
format-muted = "/vol/ {format_source}";
format-source = "/mic {volume}/";
format-source-muted = "/mic/";
};
};
}];
style =
let
makeBorder = color: "border-bottom: 3px solid #${color};";
makeInfo = color: ''
color: #${color};
${makeBorder color}
'';
clockColor = colorScheme.bright.magenta;
cpuColor = colorScheme.bright.green;
memColor = colorScheme.bright.blue;
pulseColor = {
normal = colorScheme.bright.cyan;
muted = colorScheme.bright.gray;
};
tmpColor = {
normal = colorScheme.bright.yellow;
critical = colorScheme.bright.red;
};
in
''
* {
border: none;
border-radius: 0;
/* `otf-font-awesome` is required to be installed for icons */
font-family: ${font};
font-size: 13px;
min-height: 0;
}
window#waybar {
background-color: #${bgColor};
/* border-bottom: 0px solid rgba(100, 114, 125, 0.5); */
color: #${fgColor};
transition-property: background-color;
transition-duration: .5s;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #${fgColor};
border-bottom: 3px solid transparent;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
box-shadow: inherit;
border-bottom: 3px solid #ffffff;
}
#workspaces button.focused {
border-bottom: 3px solid #${acColor};
}
#workspaces button.urgent {
background-color: #${acColor};
color: #${bgColor};
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#mpd {
padding: 0 10px;
margin: 0 4px;
background-color: transparent;
${makeInfo fgColor}
}
label:focus {
color: #000000;
}
#clock {
${makeInfo clockColor}
}
#cpu {
${makeInfo cpuColor}
}
#memory {
${makeInfo memColor}
}
#pulseaudio {
${makeInfo pulseColor.normal}
}
#pulseaudio.muted {
${makeInfo pulseColor.muted}
}
#temperature {
${makeInfo tmpColor.normal}
}
#temperature.critical {
${makeInfo tmpColor.critical}
}
'';
};
vscode = {
enable = false;
package = pkgs.vscodium;
extensions =
let
mkExt = n: v: p: s: { name = n; version = v; publisher = p; sha256 = s; };
in
(pkgs.vscode-utils.extensionsFromVscodeMarketplace [
# Rust
(mkExt "rust-analyzer" "0.2.513" "matklad" "sha256-95B5AZkw4MigZ1XsnALzy9Th9U59SDLrGCpA1FYy6vQ=")
(mkExt "even-better-toml" "0.11.1" "tamasfe" "sha256-0JpOydgcEs9PR2wUiVT9cmp9OnLX01idt0/d9UE+VI4=")
(mkExt "crates" "0.5.7" "serayuzgur" "sha256-g0eobd8QlBgWOOhqQdJX1rsplBECryRC3+9Wg8yqKeA=")
# Nix
(mkExt "nix-env-selector" "1.0.4" "arrterian" "sha256-qsz8Gj9s68BIaia80p5lw3J0OFLU3/om4XPNwn69oDY=")
# Go
(mkExt "Go" "0.23.1" "golang" "sha256-+WGWGzCBNktZFyaupiUi9DwgTTfI3uUy9UmOiS8Js6k=")
# Flutter and dart
(mkExt "flutter" "3.20.0" "Dart-Code" "sha256-egnfhJrTn6JG0jxvwyQiXIcyfpdGs0IGVor1LKf6+wI=")
(mkExt "dart-code" "3.20.0" "Dart-Code" "sha256-HeTJHH22ltrlSQkxsw+3ktO2Zvt1n+LKHeHx3rAHEL0=")
# protobuf
(mkExt "vscode-proto3" "0.5.3" "zxh404" "sha256-oUSih+YdAXYkTNejZBJjcXewQewgQFMGhAFdJ/CBMd4=")
# git
(mkExt "gitlens" "11.3.0" "eamodio" "sha256-m2Zn+e6hj59SujcW5ptdrYDrc4CviZ4wyCndO2BhyF8=")
(mkExt "vscode-commitizen" "0.12.1" "KnisterPeter" "sha256-TpfRzePDeXQlSMmjRhphN3XXTc+pp92JySZoe6ltxZg=")
# Customization
# (mkExt "dance" "0.3.2" "gregoire" "sha256-+g8EXeCkPOPvZ60JoXkGTeSXYWrXmKrcbUaEfDppdgA=")
(mkExt "material-icon-theme" "4.4.0" "PKief" "sha256-yiM+jtc7UW8PQTwmHmXHSSmvYC73GLh/cLYnmYqONdU=")
(mkExt "github-vscode-theme" "1.1.5" "github" "sha256-EPAJjM4CbR8MhV+3pm6mC12KzSt2Em6pT+c2HknNntI=")
(mkExt "koka" "0.0.1" "maelvalais" "sha256-ty8Mql19HgUWForggeZuHQpzTbmmB/eBFHqof5ZMKr0=")
]) ++ (with pkgs.vscode-extensions; [ a5huynh.vscode-ron vadimcn.vscode-lldb jnoortheen.nix-ide ]);
userSettings = {
"workbench.iconTheme" = "material-icon-theme";
"workbench.colorTheme" = "GitHub Dark";
"rust-analyzer.cargo.allFeatures" = true;
"rust-analyzer.cargo.loadOutDirsFromCheck" = true;
"rust-analyzer.procMacro.enable" = true;
"editor.fontFamily" = "'${font}'";
"debug.console.fontFamily" = "${font}";
"debug.console.fontSize" = 12;
"terminal.integrated.fontSize" = 12;
"go.useLanguageServer" = true;
"rust-analyzer.checkOnSave.command" = "clippy";
};
};
};
services = {
gpg-agent =
let
defaultCacheTtl = 3600 * 6;
maxCacheTtl = 3600 * 24;
in
{
inherit defaultCacheTtl maxCacheTtl;
enable = true;
enableSshSupport = true;
sshKeys = [ "8369D9CA26C3EAAAB8302A88CEE6FD14B58AA965" ];
defaultCacheTtlSsh = defaultCacheTtl;
maxCacheTtlSsh = maxCacheTtl;
grabKeyboardAndMouse = false;
pinentryFlavor = "qt";
};
};
xdg = {
enable = true;
configFile = {
"kak/user/kakrc".text = ''
source "%val{config}/user/color/colorscheme.kak"
'';
"kak/user/color/colorscheme.kak".text = ''
evaluate-commands %sh{
fg="rgb:${colorScheme.primary.normal.foreground}"
bg="rgb:${colorScheme.primary.normal.background}"
br_fg="rgb:${colorScheme.primary.bright.foreground}"
br_bg="rgb:${colorScheme.primary.bright.background}"
red="rgb:${colorScheme.normal.red}"
green="rgb:${colorScheme.normal.green}"
yellow="rgb:${colorScheme.normal.yellow}"
blue="rgb:${colorScheme.normal.blue}"
magenta="rgb:${colorScheme.normal.magenta}"
cyan="rgb:${colorScheme.normal.cyan}"
br_red="rgb:${colorScheme.bright.red}"
br_green="rgb:${colorScheme.bright.green}"
br_yellow="rgb:${colorScheme.bright.yellow}"
br_blue="rgb:${colorScheme.bright.blue}"
br_magenta="rgb:${colorScheme.bright.magenta}"
br_cyan="rgb:${colorScheme.bright.cyan}"
echo "
set-face global value $yellow+b
set-face global type $br_yellow
set-face global variable $magenta
set-face global module $blue
set-face global function $br_cyan
set-face global string $br_green
set-face global keyword $br_red+b
set-face global operator $br_cyan
set-face global attribute $yellow
set-face global comment $fg
set-face global meta $br_yellow
set-face global builtin $br_fg+b
set-face global title $blue+u
set-face global header $br_cyan+u
set-face global bold $br_fg+b
set-face global italic $br_fg+i
set-face global mono $br_green
set-face global block $yellow
set-face global link $blue
set-face global bullet $br_magenta
set-face global list $magenta
set-face global Default $br_fg,$bg
set-face global PrimarySelection $bg,$br_fg
set-face global SecondarySelection $br_fg,$br_bg+i
set-face global PrimaryCursor $bg,$red+b
set-face global SecondaryCursor $bg,$br_cyan+i
set-face global MatchingChar $bg,$blue
set-face global Search $br_fg,$green
set-face global CurrentWord $br_fg,$blue
set-face global MenuForeground $cyan,$br_bg+b
set-face global MenuBackground $br_fg,$bg
set-face global Information $br_yellow,$bg
set-face global Error $br_bg,$br_red
set-face global BufferPadding $bg,$bg
set-face global Whitespace $bg
set-face global StatusLine $br_fg,$bg
set-face global StatusLineInfo $yellow,$bg
set-face global LineNumbers default
set-face global LineNumberCursor default,default+r
"
}
'';
"kak-lsp/kak-lsp.toml".text = ''
snippet_support = true
verbosity = 2
[semantic_scopes]
variable = "variable"
entity_name_function = "function"
entity_name_type = "type"
variable_other_enummember = "variable"
entity_name_namespace = "module"
[semantic_tokens]
type = "type"
variable = "variable"
namespace = "module"
function = "function"
string = "string"
keyword = "keyword"
operator = "operator"
comment = "comment"
[semantic_modifiers]
documentation = "documentation"
readonly = "default+d"
[server]
timeout = 1800
[language.rust]
filetypes = ["rust"]
roots = ["Cargo.toml"]
command = "${pkgBin "rust-analyzer"}"
[language.nix]
filetypes = ["nix"]
roots = ["flake.nix", "shell.nix", ".git"]
command = "${pkgBin "rnix-lsp"}"
'';
"nixpkgs/config.nix".text = ''
{
android_sdk.accept_license = true;
allowUnfree = true;
}
'';
} // kideFiles;
};
};
} }

View File

@ -1,939 +0,0 @@
{ config, lib, pkgs, util, ... }:
let
inherit (lib) mapAttrs' nameValuePair;
inherit (builtins) readDir;
inherit (util) pkgBin;
nixosConfig = config;
name = "Yusuf Bera Ertan";
email = "y.bera003.06@protonmail.com";
font = "Iosevka Term";
fontSize = 10;
fontComb = "${font} ${toString fontSize}";
fontPackage = pkgs.iosevka;
kideSrc = builtins.fetchGit {
url = "https://gitlab.com/yusdacra/kide.git";
rev = "778d68df0cfcb96d6113bfe6a59e5dfc71ee7d82";
submodules = true;
};
kideFiles =
mapAttrs' (n: _: nameValuePair "kak/${n}" { source = "${kideSrc}/${n}"; })
(readDir kideSrc);
kideDeps = with pkgs; [
fzf
bat
ripgrep
universal-ctags
kak-lsp
wl-clipboard
xclip
shellcheck
perl
socat
gdb
kcr
jq
file
];
chromiumWayland =
let
flags = [
"--enable-features=UseOzonePlatform"
"--ozone-platform=wayland"
"--enable-vulkan"
"--enable-webrtc-pipewire-capturer"
"--ignore-gpu-blocklist"
"--enable-gpu-rasterization"
"--enable-zero-copy"
"--disable-gpu-driver-bug-workarounds"
];
in
pkgs.writeScriptBin "chromium-wayland" ''
#!${pkgs.stdenv.shell}
chromium ${lib.concatStringsSep " " flags}
'';
chromiumWaylandPkg = with pkgs;
let name = "chromium-wayland"; in
stdenv.mkDerivation {
pname = name;
version = chromium.version;
nativeBuildInputs = [ copyDesktopItems ];
desktopItems = [
(makeDesktopItem {
inherit name;
exec = name;
desktopName = "Chromium Wayland";
genericName = "Web Browser";
})
];
phases = [ "installPhase" ];
installPhase = ''
mkdir -p $out/bin
ln -s ${chromiumWayland}/bin/chromium-wayland $out/bin/chromium-wayland
'';
};
colorSchemeLight = {
primary = {
normal = {
background = "fbf3db";
foreground = "53676d";
};
bright = {
background = "d5cdb6";
foreground = "3a4d53";
};
};
normal = {
black = "ece3cc";
gray = "5b5b5b";
red = "d2212d";
green = "489100";
yellow = "ad8900";
blue = "0072d4";
magenta = "ca4898";
cyan = "009c8f";
white = "909995";
};
bright = {
black = "d5cdb6";
gray = "7b7b7b";
red = "cc1729";
green = "428b00";
yellow = "a78300";
blue = "006dce";
magenta = "c44392";
cyan = "00978a";
white = "3a4d53";
};
};
colorSchemeDark =
let
normal = {
black = "252525";
gray = "5b5b5b";
red = "ed4a46";
green = "70b433";
yellow = "dbb32d";
blue = "368aeb";
magenta = "eb6eb7";
cyan = "3fc5b7";
white = "777777";
};
bright = {
black = "3b3b3b";
gray = "7b7b7b";
red = "ff5e56";
green = "83c746";
yellow = "efc541";
blue = "4f9cfe";
magenta = "ff81ca";
cyan = "56d8c9";
white = "dedede";
};
in
{
inherit normal bright;
primary = {
normal = {
background = "181818";
foreground = "b9b9b9";
};
bright = {
background = bright.black;
foreground = bright.white;
};
};
};
colorScheme =
# if builtins.pathExists ./light then colorSchemeLight else colorSchemeDark;
colorSchemeDark;
bgColor = colorScheme.primary.normal.background;
fgColor = colorScheme.primary.bright.foreground;
acColor = colorScheme.normal.yellow;
acColor2 = colorScheme.normal.magenta;
alacrittyColors = {
primary = {
background = "0x${bgColor}";
foreground = "0x${fgColor}";
};
normal = lib.mapAttrs (_: v: "0x${v}") colorScheme.normal;
bright = lib.mapAttrs (_: v: "0x${v}") colorScheme.bright;
};
# sway attrs reused
focusedWorkspace = {
background = "#${bgColor}";
border = "#${acColor}";
text = "#${acColor}";
};
activeWorkspace = {
background = "#${bgColor}";
border = "#${colorScheme.primary.bright.background}";
text = "#${fgColor}";
};
inactiveWorkspace = {
background = "#${bgColor}";
border = "#${bgColor}";
text = "#${fgColor}";
};
urgentWorkspace = {
background = "#${bgColor}";
border = "#${acColor2}";
text = "#${acColor2}";
};
addIndSway = x: {
background = x.background;
border = x.border;
childBorder = x.border;
text = x.text;
indicator = "#111111"; # don't care
};
fonts = [ fontComb ];
extraEnv = ''
# export SDL_VIDEODRIVER=wayland
# needs qt5.qtwayland in systemPackages
export QT_QPA_PLATFORM=wayland
export QT_WAYLAND_DISABLE_WINDOWDECORATION="1"
# Fix for some Java AWT applications (e.g. Android Studio),
# use this if they aren't displayed properly:
export _JAVA_AWT_WM_NONREPARENTING=1
export QT_QPA_PLATFORMTHEME=qt5ct
export QT_PLATFORM_PLUGIN=qt5ct
'';
in
{
home-manager.users.patriot = { config, pkgs, ... }: {
imports = [ ../profiles/hikari.nix ];
# needs to be fixed to use nix profile???
/*gtk = {
enable = false;
font = {
package = pkgs.dejavu_fonts;
name = "DejaVu Sans 12";
};
iconTheme = {
package = pkgs.papirus-icon-theme;
name = "Papirus Dark";
};
theme = {
package = pkgs.numix-gtk-theme;
name = "Numix Dark";
};
};
qt = {
enable = false;
style = {
package = pkgs.adwaita-qt;
name = "adwaita-dark";
};
};*/
fonts.fontconfig.enable = true;
home = {
homeDirectory = nixosConfig.users.users.patriot.home;
packages = with pkgs;
[
# Font stuff
fontPackage
noto-fonts-cjk
noto-fonts-emoji-blob-bin
font-awesome
(nerdfonts.override { fonts = [ "Iosevka" ]; })
# Programs
discord
ripcord
audacity
krita
gimp
kdenlive
gnome3.seahorse
gnome3.gnome-boxes
wine-staging
cachix
chromiumWaylandPkg
appimage-run
bitwarden
pfetch
neofetch
gnupg
imv
mpv
youtube-dl
ffmpeg
mupdf
transmission-qt
steam-run
lutris
xdg_utils
tagref
libreoffice-fresh
mako
hydrus
musikcube
qt5ct
phantomstyle
papirus-icon-theme
pcmanfm-qt
] ++ kideDeps;
};
wayland.windowManager = {
hikari = {
enable = false;
inherit font;
};
sway = {
enable = true;
extraSessionCommands = extraEnv;
wrapperFeatures.gtk = true;
config = {
inherit fonts;
bars = [{
command = "${pkgBin "waybar"}";
}];
colors = {
background = "#${bgColor}";
focused = addIndSway focusedWorkspace;
focusedInactive = addIndSway inactiveWorkspace;
unfocused = addIndSway activeWorkspace;
urgent = addIndSway urgentWorkspace;
};
gaps.smartBorders = "on";
menu = "${pkgBin "rofi"} -show drun | ${pkgs.sway}/bin/swaymsg --";
modifier = "Mod4";
terminal = pkgBin "alacritty";
keybindings =
let
mod = config.wayland.windowManager.sway.config.modifier;
cat = pkgs.coreutils + "/bin/cat";
grim = pkgBin "grim";
slurp = pkgBin "slurp";
pactl = pkgs.pulseaudio + "/bin/pactl";
playerctl = pkgBin "playerctl";
wf-recorder = pkgBin "wf-recorder";
wl-copy = pkgs.wl-clipboard + "/bin/wl-copy";
wl-paste = pkgs.wl-clipboard + "/bin/wl-paste";
shotFile = config.home.homeDirectory
+ "/shots/shot_$(date '+%Y_%m_%d_%H_%M')";
in
lib.mkOptionDefault {
"${mod}+q" = "kill";
"${mod}+Shift+e" = "exit";
"${mod}+Shift+r" = "reload";
# Screenshot and copy it to clipboard
"Mod1+s" = ''
exec export SFILE="${shotFile}.png" && ${grim} "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Save selected area as a picture and copy it to clipboard
"Mod1+Shift+s" = ''
exec export SFILE="${shotFile}.png" && ${grim} -g "$(${slurp})" "$SFILE" && ${cat} "$SFILE" | ${wl-copy} -t image/png
'';
# Record screen
"Mod1+r" = ''exec ${wf-recorder} -f "${shotFile}.mp4"'';
# Record an area
"Mod1+Shift+r" =
''exec ${wf-recorder} -g "$(${slurp})" -f "${shotFile}.mp4"'';
# Stop recording
"Mod1+c" = "exec pkill -INT wf-recorder";
"XF86AudioRaiseVolume" = "exec ${pactl} set-sink-volume 0 +5%";
"XF86AudioLowerVolume" = "exec ${pactl} set-sink-volume 0 -5%";
"XF86AudioMute" = "exec ${pactl} set-sink-mute 0 toggle";
"XF86AudioPlay" = "exec ${playerctl} play-pause";
"XF86AudioPrev" = "exec ${playerctl} previous";
"XF86AudioNext" = "exec ${playerctl} next";
"XF86AudioStop" = "exec ${playerctl} stop";
};
input = {
"*" = {
xkb_layout = nixosConfig.services.xserver.layout;
accel_profile = "flat";
};
};
output = {
"*" = {
bg = config.home.homeDirectory + "/wallpaper.png" + " fill";
};
};
};
};
};
programs = {
alacritty = {
enable = true;
settings = {
shell = {
program = "${pkgs.tmux}/bin/tmux";
args = [ "attach" ];
};
font = {
normal = { family = font; };
size = fontSize;
};
colors = alacrittyColors;
};
};
tmux = {
enable = true;
newSession = true;
secureSocket = true;
baseIndex = 1;
escapeTime = 0;
keyMode = "vi";
shortcut = "a";
extraConfig = ''
set -g default-terminal "alacritty"
set -ga terminal-overrides ",alacritty:Tc"
set -g status off
'';
};
chromium = {
enable = true;
extensions = [
"gcbommkclmclpchllfjekcdonpmejbdp" # https everywhere
"cjpalhdlnbpafiamejdnhcphjbkeiagm" # ublock
"nngceckbapebfimnlniiiahkandclblb" # bitwarden
"ldpochfccmkkmhdbclfhpagapcfdljkj" # decentraleyes
"annfbnbieaamhaimclajlajpijgkdblo" # dark theme
"eimadpbcbfnmbkopoojfekhnkhdbieeh" # dark reader
"hlepfoohegkhhmjieoechaddaejaokhf" # github refined
"pmcmeagblkinmogikoikkdjiligflglb" # privacy redirect
];
};
qutebrowser = {
enable = false;
settings = {
content.javascript.enabled = false;
colors.webpage.darkmode.enabled = false;
tabs = {
show = "multiple";
tabs_are_windows = true;
};
};
extraConfig =
let
domains = [
"discord.com"
"github.com"
"gitlab.com"
"nixos.org"
"protonmail.com"
"bitwarden.com"
"duckduckgo.com"
"youtube.com"
"docker.com"
];
enableJsForDomain = d: ''
config.set('content.javascript.enabled', True, 'https://*.${d}')
'';
in
''
${lib.concatStrings (map enableJsForDomain domains)}
'';
};
git = {
enable = true;
aliases = {
a = "add";
b = "branch";
c = "commit";
d = "diff";
l = "log";
s = "status";
co = "checkout";
dc = "diff --cached";
qc = "commit -am";
pl = "pull";
ps = "push";
rb = "rebase";
rs = "restore";
rv = "revert";
ss = "stash";
rst = "reset";
rss = "restore --staged";
ssp = "stash pop";
ssl = "stash list";
ssd = "stash drop";
};
extraConfig = { pull.rebase = true; };
lfs.enable = true;
signing = {
key = "E1C119F91F4CAE53E8445CAFBB57FCE7E35984F6";
signByDefault = true;
};
userName = name;
userEmail = email;
};
ssh = {
enable = true;
compression = true;
hashKnownHosts = true;
userKnownHostsFile = "~/.local/share/ssh/known-hosts";
# Only needed for darcs hub
# extraConfig = ''
# Host hub.darcs.net
# ControlMaster no
# ForwardAgent no
# ForwardX11 no
# Ciphers +aes256-cbc
# MACs +hmac-sha1
# '';
};
zsh = {
enable = true;
autocd = true;
enableVteIntegration = true;
enableAutosuggestions = true;
enableCompletion = true;
plugins =
let
fast-syntax-highlighting =
let name = "fast-syntax-highlighting"; in
{
inherit name;
src = pkgs."zsh-${name}".out;
};
per-directory-history = {
name = "per-directory-history";
src = pkgs.fetchFromGitHub {
owner = "jimhester";
repo = "per-directory-history";
rev = "d2e291dd6434e340d9be0e15e1f5b94f32771c06";
hash = "sha256-VHRgrVCqzILqOes8VXGjSgLek38BFs9eijmp0JHtD5Q=";
};
};
in
[ fast-syntax-highlighting per-directory-history ];
# xdg compliant
dotDir = ".config/zsh";
history.path = ".local/share/zsh/history";
envExtra = extraEnv;
loginExtra =
''
if [ "$(${pkgs.coreutils}/bin/tty)" = "/dev/tty1" ]; then
exec sway
fi
'';
initExtra = ''
export TERM=alacritty
function tomp4 () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 -c:v libx264 -preset slow -crf 30 -c:a aac -b:a 128k "$1.mp4"
}
function topng () {
${pkgs.ffmpeg}/bin/ffmpeg -i $1 "$1.png"
}
bindkey "$terminfo[kRIT5]" forward-word
bindkey "$terminfo[kLFT5]" backward-word
zstyle ':completion:*' menu select
eval "$(zoxide init zsh)"
'';
shellAliases = nixosConfig.environment.shellAliases // {
rember = ''
${pkgs.kakoune-unwrapped}/bin/kak -e "try %(gtd-jump-today)" "${config.home.homeDirectory}/rember/stuff$(date '+_%m_%Y').gtd"
'';
};
};
starship = {
enable = true;
settings = {
add_newline = false;
character.symbol = ">";
directory = {
truncation_length = 2;
truncate_to_repo = false;
};
};
};
direnv = {
enable = true;
enableNixDirenvIntegration = true;
};
fzf.enable = true;
rofi =
let
bgc = "#${bgColor}";
fgc = "#${fgColor}";
acc = "#${acColor}";
in
{
enable = true;
colors = {
window = {
background = bgc;
border = bgc;
separator = bgc;
};
rows = {
normal = {
background = bgc;
foreground = fgc;
backgroundAlt = bgc;
highlight = {
background = bgc;
foreground = acc;
};
};
};
};
font = fontComb;
separator = "none";
terminal = pkgBin "alacritty";
};
waybar =
let
swayEnabled = config.wayland.windowManager.sway.enable;
in
{
enable = swayEnabled || config.wayland.windowManager.hikari.enable;
settings = [{
layer = "top";
position = "top";
modules-left = if swayEnabled then [ "sway/workspaces" ] else [ ];
modules-center = if swayEnabled then [ "sway/window" ] else [ ];
modules-right =
[ "pulseaudio" "cpu" "memory" "temperature" "clock" "tray" ];
modules = {
"tray" = { spacing = 8; };
"cpu" = { format = "/cpu {usage}/"; };
"memory" = { format = "/mem {}/"; };
"temperature" = {
hwmon-path = "/sys/class/hwmon/hwmon1/temp2_input";
format = "/tmp {temperatureC}C/";
};
"pulseaudio" = {
format = "/vol {volume}/ {format_source}";
format-bluetooth = "/volb {volume}/ {format_source}";
format-bluetooth-muted = "/volb/ {format_source}";
format-muted = "/vol/ {format_source}";
format-source = "/mic {volume}/";
format-source-muted = "/mic/";
};
};
}];
style =
let
makeBorder = color: "border-bottom: 3px solid #${color};";
makeInfo = color: ''
color: #${color};
${makeBorder color}
'';
clockColor = colorScheme.bright.magenta;
cpuColor = colorScheme.bright.green;
memColor = colorScheme.bright.blue;
pulseColor = {
normal = colorScheme.bright.cyan;
muted = colorScheme.bright.gray;
};
tmpColor = {
normal = colorScheme.bright.yellow;
critical = colorScheme.bright.red;
};
in
''
* {
border: none;
border-radius: 0;
/* `otf-font-awesome` is required to be installed for icons */
font-family: ${font};
font-size: 13px;
min-height: 0;
}
window#waybar {
background-color: #${bgColor};
/* border-bottom: 0px solid rgba(100, 114, 125, 0.5); */
color: #${fgColor};
transition-property: background-color;
transition-duration: .5s;
}
#workspaces button {
padding: 0 5px;
background-color: transparent;
color: #${fgColor};
border-bottom: 3px solid transparent;
}
/* https://github.com/Alexays/Waybar/wiki/FAQ#the-workspace-buttons-have-a-strange-hover-effect */
#workspaces button:hover {
background: rgba(0, 0, 0, 0.2);
box-shadow: inherit;
border-bottom: 3px solid #ffffff;
}
#workspaces button.focused {
border-bottom: 3px solid #${acColor};
}
#workspaces button.urgent {
background-color: #${acColor};
color: #${bgColor};
}
#mode {
background-color: #64727D;
border-bottom: 3px solid #ffffff;
}
#clock,
#battery,
#cpu,
#memory,
#temperature,
#backlight,
#network,
#pulseaudio,
#custom-media,
#tray,
#mode,
#idle_inhibitor,
#mpd {
padding: 0 10px;
margin: 0 4px;
background-color: transparent;
${makeInfo fgColor}
}
label:focus {
color: #000000;
}
#clock {
${makeInfo clockColor}
}
#cpu {
${makeInfo cpuColor}
}
#memory {
${makeInfo memColor}
}
#pulseaudio {
${makeInfo pulseColor.normal}
}
#pulseaudio.muted {
${makeInfo pulseColor.muted}
}
#temperature {
${makeInfo tmpColor.normal}
}
#temperature.critical {
${makeInfo tmpColor.critical}
}
'';
};
vscode = {
enable = false;
package = pkgs.vscodium;
extensions =
let
mkExt = n: v: p: s: { name = n; version = v; publisher = p; sha256 = s; };
in
(pkgs.vscode-utils.extensionsFromVscodeMarketplace [
# Rust
(mkExt "rust-analyzer" "0.2.513" "matklad" "sha256-95B5AZkw4MigZ1XsnALzy9Th9U59SDLrGCpA1FYy6vQ=")
(mkExt "even-better-toml" "0.11.1" "tamasfe" "sha256-0JpOydgcEs9PR2wUiVT9cmp9OnLX01idt0/d9UE+VI4=")
(mkExt "crates" "0.5.7" "serayuzgur" "sha256-g0eobd8QlBgWOOhqQdJX1rsplBECryRC3+9Wg8yqKeA=")
# Nix
(mkExt "nix-env-selector" "1.0.4" "arrterian" "sha256-qsz8Gj9s68BIaia80p5lw3J0OFLU3/om4XPNwn69oDY=")
# Go
(mkExt "Go" "0.23.1" "golang" "sha256-+WGWGzCBNktZFyaupiUi9DwgTTfI3uUy9UmOiS8Js6k=")
# Flutter and dart
(mkExt "flutter" "3.20.0" "Dart-Code" "sha256-egnfhJrTn6JG0jxvwyQiXIcyfpdGs0IGVor1LKf6+wI=")
(mkExt "dart-code" "3.20.0" "Dart-Code" "sha256-HeTJHH22ltrlSQkxsw+3ktO2Zvt1n+LKHeHx3rAHEL0=")
# protobuf
(mkExt "vscode-proto3" "0.5.3" "zxh404" "sha256-oUSih+YdAXYkTNejZBJjcXewQewgQFMGhAFdJ/CBMd4=")
# git
(mkExt "gitlens" "11.3.0" "eamodio" "sha256-m2Zn+e6hj59SujcW5ptdrYDrc4CviZ4wyCndO2BhyF8=")
(mkExt "vscode-commitizen" "0.12.1" "KnisterPeter" "sha256-TpfRzePDeXQlSMmjRhphN3XXTc+pp92JySZoe6ltxZg=")
# Customization
# (mkExt "dance" "0.3.2" "gregoire" "sha256-+g8EXeCkPOPvZ60JoXkGTeSXYWrXmKrcbUaEfDppdgA=")
(mkExt "material-icon-theme" "4.4.0" "PKief" "sha256-yiM+jtc7UW8PQTwmHmXHSSmvYC73GLh/cLYnmYqONdU=")
(mkExt "github-vscode-theme" "1.1.5" "github" "sha256-EPAJjM4CbR8MhV+3pm6mC12KzSt2Em6pT+c2HknNntI=")
(mkExt "koka" "0.0.1" "maelvalais" "sha256-ty8Mql19HgUWForggeZuHQpzTbmmB/eBFHqof5ZMKr0=")
]) ++ (with pkgs.vscode-extensions; [ a5huynh.vscode-ron vadimcn.vscode-lldb jnoortheen.nix-ide ]);
userSettings = {
"workbench.iconTheme" = "material-icon-theme";
"workbench.colorTheme" = "GitHub Dark";
"rust-analyzer.cargo.allFeatures" = true;
"rust-analyzer.cargo.loadOutDirsFromCheck" = true;
"rust-analyzer.procMacro.enable" = true;
"editor.fontFamily" = "'${font}'";
"debug.console.fontFamily" = "${font}";
"debug.console.fontSize" = 12;
"terminal.integrated.fontSize" = 12;
"go.useLanguageServer" = true;
"rust-analyzer.checkOnSave.command" = "clippy";
};
};
};
services = {
gpg-agent =
let
defaultCacheTtl = 3600 * 6;
maxCacheTtl = 3600 * 24;
in
{
inherit defaultCacheTtl maxCacheTtl;
enable = true;
enableSshSupport = true;
sshKeys = [ "8369D9CA26C3EAAAB8302A88CEE6FD14B58AA965" ];
defaultCacheTtlSsh = defaultCacheTtl;
maxCacheTtlSsh = maxCacheTtl;
grabKeyboardAndMouse = false;
pinentryFlavor = "qt";
};
};
xdg = {
enable = true;
configFile = {
"kak/user/kakrc".text = ''
source "%val{config}/user/color/colorscheme.kak"
'';
"kak/user/color/colorscheme.kak".text = ''
evaluate-commands %sh{
fg="rgb:${colorScheme.primary.normal.foreground}"
bg="rgb:${colorScheme.primary.normal.background}"
br_fg="rgb:${colorScheme.primary.bright.foreground}"
br_bg="rgb:${colorScheme.primary.bright.background}"
red="rgb:${colorScheme.normal.red}"
green="rgb:${colorScheme.normal.green}"
yellow="rgb:${colorScheme.normal.yellow}"
blue="rgb:${colorScheme.normal.blue}"
magenta="rgb:${colorScheme.normal.magenta}"
cyan="rgb:${colorScheme.normal.cyan}"
br_red="rgb:${colorScheme.bright.red}"
br_green="rgb:${colorScheme.bright.green}"
br_yellow="rgb:${colorScheme.bright.yellow}"
br_blue="rgb:${colorScheme.bright.blue}"
br_magenta="rgb:${colorScheme.bright.magenta}"
br_cyan="rgb:${colorScheme.bright.cyan}"
echo "
set-face global value $yellow+b
set-face global type $br_yellow
set-face global variable $magenta
set-face global module $blue
set-face global function $br_cyan
set-face global string $br_green
set-face global keyword $br_red+b
set-face global operator $br_cyan
set-face global attribute $yellow
set-face global comment $fg
set-face global meta $br_yellow
set-face global builtin $br_fg+b
set-face global title $blue+u
set-face global header $br_cyan+u
set-face global bold $br_fg+b
set-face global italic $br_fg+i
set-face global mono $br_green
set-face global block $yellow
set-face global link $blue
set-face global bullet $br_magenta
set-face global list $magenta
set-face global Default $br_fg,$bg
set-face global PrimarySelection $bg,$br_fg
set-face global SecondarySelection $br_fg,$br_bg+i
set-face global PrimaryCursor $bg,$red+b
set-face global SecondaryCursor $bg,$br_cyan+i
set-face global MatchingChar $bg,$blue
set-face global Search $br_fg,$green
set-face global CurrentWord $br_fg,$blue
set-face global MenuForeground $cyan,$br_bg+b
set-face global MenuBackground $br_fg,$bg
set-face global Information $br_yellow,$bg
set-face global Error $br_bg,$br_red
set-face global BufferPadding $bg,$bg
set-face global Whitespace $bg
set-face global StatusLine $br_fg,$bg
set-face global StatusLineInfo $yellow,$bg
set-face global LineNumbers default
set-face global LineNumberCursor default,default+r
"
}
'';
"kak-lsp/kak-lsp.toml".text = ''
snippet_support = true
verbosity = 2
[semantic_scopes]
variable = "variable"
entity_name_function = "function"
entity_name_type = "type"
variable_other_enummember = "variable"
entity_name_namespace = "module"
[semantic_tokens]
type = "type"
variable = "variable"
namespace = "module"
function = "function"
string = "string"
keyword = "keyword"
operator = "operator"
comment = "comment"
[semantic_modifiers]
documentation = "documentation"
readonly = "default+d"
[server]
timeout = 1800
[language.rust]
filetypes = ["rust"]
roots = ["Cargo.toml"]
command = "${pkgBin "rust-analyzer"}"
[language.nix]
filetypes = ["nix"]
roots = ["flake.nix", "shell.nix", ".git"]
command = "${pkgBin "rnix-lsp"}"
'';
"nix/nix.conf".text = nixosConfig.nix.extraOptions;
"nixpkgs/config.nix".text = ''
{
android_sdk.accept_license = true;
allowUnfree = true;
}
'';
} // kideFiles;
};
};
}