diff options
Diffstat (limited to 'jeschli')
| -rw-r--r-- | jeschli/1systems/reagenzglas/.source.nix.swp | bin | 0 -> 12288 bytes | |||
| -rw-r--r-- | jeschli/1systems/reagenzglas/config.nix | 146 | ||||
| -rw-r--r-- | jeschli/1systems/reagenzglas/hardware-configuration.nix | 33 | ||||
| -rw-r--r-- | jeschli/1systems/reagenzglas/source.nix | 4 | ||||
| -rw-r--r-- | jeschli/2configs/copy-vim.nix | 102 | ||||
| -rw-r--r-- | jeschli/2configs/default.nix | 66 | ||||
| -rw-r--r-- | jeschli/2configs/retiolum.nix | 22 | ||||
| -rw-r--r-- | jeschli/2configs/vim.nix | 373 | ||||
| -rw-r--r-- | jeschli/default.nix | 9 | ||||
| -rw-r--r-- | jeschli/source.nix | 22 | 
10 files changed, 777 insertions, 0 deletions
| diff --git a/jeschli/1systems/reagenzglas/.source.nix.swp b/jeschli/1systems/reagenzglas/.source.nix.swpBinary files differ new file mode 100644 index 000000000..8c1a75f39 --- /dev/null +++ b/jeschli/1systems/reagenzglas/.source.nix.swp diff --git a/jeschli/1systems/reagenzglas/config.nix b/jeschli/1systems/reagenzglas/config.nix new file mode 100644 index 000000000..d65e897ae --- /dev/null +++ b/jeschli/1systems/reagenzglas/config.nix @@ -0,0 +1,146 @@ +# Edit this configuration file to define what should be installed on +# your system.  Help is available in the configuration.nix(5) man page +# and in the NixOS manual (accessible by running ‘nixos-help’). + +{ config, pkgs, ... }: + +{ +  imports = +    [ # Include the results of the hardware scan. +      <stockholm/jeschli> +      ./hardware-configuration.nix +    ]; + +  # Use the GRUB 2 boot loader. + # boot.loader.grub.enable = true; + # boot.loader.grub.version = 2; +  # boot.loader.grub.efiSupport = true; +  # boot.loader.grub.efiInstallAsRemovable = true; +  boot.loader.systemd-boot.enable = true; +  boot.loader.efi.canTouchEfiVariables = true; +  # Define on which hard drive you want to install Grub. +#  boot.loader.grub.device = "/dev/disk/by-id/wwn-0x5002538844584d30"; # or "nodev" for efi only + +  boot.initrd.luks.devices = [ +    { +    name = "root"; +    device = "/dev/disk/by-id/wwn-0x5002538844584d30-part2"; +    preLVM = true; +    allowDiscards = true; +    } +  ]; +  networking.hostName = "reaganzglas"; # Define your hostname. +#  networking.wireless.enable = true;  # Enables wireless support via wpa_supplicant. +  networking.networkmanager.enable = true; +  # Select internationalisation properties. +  # i18n = { +  #   consoleFont = "Lat2-Terminus16"; +  #   consoleKeyMap = "us"; +  #   defaultLocale = "en_US.UTF-8"; +  # }; + +  # Set your time zone. +  # time.timeZone = "Europe/Amsterdam"; + +  # List packages installed in system profile. To search by name, run: +  # $ nix-env -qaP | grep wget +  nixpkgs.config.allowUnfree = true; +  environment.shellAliases = { n = "nix-shell"; }; +  environment.variables = { GOROOT= [ "${pkgs.go.out}/share/go" ]; }; +  environment.systemPackages = with pkgs; [ +  # system helper +    ag +    curl +    copyq +    dmenu +    git +    i3lock +    keepass +    networkmanagerapplet +    rsync +    terminator +    tmux +    wget +    rxvt_unicode +  # editors +    emacs +  # internet +    thunderbird +    chromium +    google-chrome +  # programming languages +    go +    gcc +    ghc +    python35 +    python35Packages.pip +  # go tools +    golint +    gotools +  # dev tools +    gnumake +  # document viewer +    zathura +   ]; + +  # Some programs need SUID wrappers, can be configured further or are +  # started in user sessions. +  # programs.mtr.enable = true; +  # programs.gnupg.agent = { enable = true; enableSSHSupport = true; }; + +  # List services that you want to enable: + +  # Enable the OpenSSH daemon. +  services.openssh.enable = true; +  users.users.root.openssh.authorizedKeys.keys = [ +    "ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDMPuFzd6p3zZETIjoV5mRxCTQgeZk9s/P374mEDbj58wDTT0uGWu2JRf7cL1QRTvd5238tYl0eSHXH65+oaFB/mIvmiRnuw6qQODOMHlSbJN5/J2hEw/3v5gveiP1xNLfKlFhj6mmMRF7Etvzns/kLGLCSjj1UTlfo4iHmtinPmU+iQ8J4foS4cZj4oZesF8gndkc2EFMfL6en7EuU8GK6U9GtwKNL9N4UoUZXu8Nf00pkn/jrpmsDdI4zdVVAxWeu/Lo4li43EVixLcfwQiwzf6S9FvYIv30xPdy92GJSJwxm/QkYuc48VZWUoE+qThf3IEPETtX+MRZrM8RTtY01 markus@reaganzglas" +  ]; + +  # Open ports in the firewall. +  # networking.firewall.allowedTCPPorts = [ ... ]; +  # networking.firewall.allowedUDPPorts = [ ... ]; +  # Or disable the firewall altogether. +  # networking.firewall.enable = false; + +  # Enable CUPS to print documents. +  # services.printing.enable = true; + +  # Enable the X11 windowing system. +   services.xserver.enable = true; +   services.xserver.layout = "us"; +   services.xserver.xkbOptions = "eurosign:e"; + +  # Enable touchpad support. +   services.xserver.libinput.enable = true; + +  # Enable the KDE Desktop Environment. +  services.xserver.displayManager.sddm.enable = true; +  services.xserver.windowManager.xmonad.enable = true; +  services.xserver.windowManager.xmonad.enableContribAndExtras = true; + +  # services.xserver.desktopManager.plasma5.enable = true; + +  # Define a user account. Don't forget to set a password with ‘passwd’. +  users.extraUsers.jeschli = { +     isNormalUser = true; +     uid = 1000; +  }; + +  # This value determines the NixOS release with which your system is to be +  # compatible, in order to avoid breaking some software such as database +  # servers. You should change this only after NixOS release notes say you +  # should. +  system.stateVersion = "18.03"; # Did you read the comment? + +  programs.bash = { +    enableCompletion = true; +    interactiveShellInit = '' +      export GOPATH=$HOME/go +      export PATH=$PATH:$GOPATH/bin +    ''; +  }; + +  krebs.build.host = config.krebs.hosts.reagenzglas; + +  hardware.bluetooth.enable = true; +} diff --git a/jeschli/1systems/reagenzglas/hardware-configuration.nix b/jeschli/1systems/reagenzglas/hardware-configuration.nix new file mode 100644 index 000000000..a6ab3f16e --- /dev/null +++ b/jeschli/1systems/reagenzglas/hardware-configuration.nix @@ -0,0 +1,33 @@ +# Do not modify this file!  It was generated by ‘nixos-generate-config’ +# and may be overwritten by future invocations.  Please make changes +# to /etc/nixos/configuration.nix instead. +{ config, lib, pkgs, ... }: + +{ +  imports = +    [ <nixpkgs/nixos/modules/installer/scan/not-detected.nix> +    ]; + +  boot.initrd.availableKernelModules = [ "xhci_pci" "ehci_pci" "ahci" "sd_mod" "sr_mod" "rtsx_pci_sdmmc" ]; +  boot.kernelModules = [ "kvm-intel" ]; +  boot.extraModulePackages = [ ]; + +  fileSystems."/" = +    { device = "/dev/disk/by-uuid/09130cf7-b71b-42ab-9fa3-cb3c745f1fc9"; +      fsType = "ext4"; +    }; + +  fileSystems."/home" = +    { device = "/dev/disk/by-uuid/8bee50b3-5733-4373-a966-388def141774"; +      fsType = "ext4"; +    }; + +  fileSystems."/boot" = +    { device = "/dev/disk/by-uuid/DA40-AC19"; +      fsType = "vfat"; +    }; +  swapDevices = [ ]; + +  nix.maxJobs = lib.mkDefault 8; +#  powerManagement.cpuFreqGovernor = lib.mkDefault "powersave"; +} diff --git a/jeschli/1systems/reagenzglas/source.nix b/jeschli/1systems/reagenzglas/source.nix new file mode 100644 index 000000000..7543de6b9 --- /dev/null +++ b/jeschli/1systems/reagenzglas/source.nix @@ -0,0 +1,4 @@ +import <stockholm/jeschli/source.nix> { +  name = "reagenzglas"; +  secure = true; +} diff --git a/jeschli/2configs/copy-vim.nix b/jeschli/2configs/copy-vim.nix new file mode 100644 index 000000000..43fcb1956 --- /dev/null +++ b/jeschli/2configs/copy-vim.nix @@ -0,0 +1,102 @@ +{ config, pkgs, ... }: + + +# let  +#   customPlugins.ultisnips = pkgs.vimUtils.buildVimPlugin { +#     name = "ultisnips"; +#     src = pkgs.fetchFromGitHub { +#       owner = "SirVer"; +#       repo = "ultisnips"; +#       rev = "3.1"; +#       sha256 = "0p9d91h9pm0nx0d77lqsgv6158q052cyj4nm1rd6zvbay9bkkf8b";  +#     }; +#   }; +# +let +  customPlugins.vim-javascript = pkgs.vimUtils.buildVimPlugin { +    name = "vim-javascript"; +    src = pkgs.fetchFromGitHub { +      owner = "pangloss"; +      repo = "vim-javascript"; +      rev = "1.2.5.1"; +      sha256 = "08l7ricd3j5h2bj9i566byh39v9n5wj5mj75f2c8a5dsc732b2k7"; +    }; +  }; +   customPlugins.vim-jsx = pkgs.vimUtils.buildVimPlugin { +     name = "vim-jsx"; +     src = pkgs.fetchFromGitHub { +       owner = "mxw"; +       repo = "vim-jsx"; +       rev = "5b968dfa512c57c38ad7fe420f3e8ab75a73949a"; +       sha256 = "1z3yhhbmbzfw68qjzyvpbmlyv2a1p814sy5q2knn04kcl30vx94a";  +     }; +   }; +in { +# { +  environment.systemPackages = [ +    (pkgs.vim_configurable.customize { +      name = "vim"; + +    vimrcConfig.customRC = '' +	:imap jk <Esc> +	:vmap v v +	:map gr :GoRun<Enter> +	:nnoremap <S-TAB> :bnext<CR> +	:nnoremap <C-TAB> <c-w><c-w> +	set autowrite +	set number +	set ruler + +	noremap x "_x +	set clipboard=unnamedplus + +  let g:jsx_ext_required = 0 + +	let g:go_list_type = "quickfix" +	let g:go_test_timeout = '10s' +	let g:go_fmt_command = "goimports" +	let g:go_snippet_case_type = "camelcase" +	let g:go_highlight_types = 1 +	let g:go_highlight_fields = 1 +	let g:go_highlight_functions = 1 +	let g:go_highlight_methods = 1 +  let g:go_highlight_extra_types = 1 +  autocmd BufNewFile,BufRead *.go setlocal noexpandtab tabstop=4 shiftwidth=4  +  let g:rehash256 = 1 +  let g:molokai_original = 1 +  colorscheme molokai +	let g:go_metalinter_enabled = ['vet', 'golint', 'errcheck'] +	let g:go_metalinter_autosave = 1 +	" let g:go_metalinter_autosave_enabled = ['vet', 'golint'] +	" let g:go_def_mode = 'godef' +	" let g:go_decls_includes = "func,type" + + +	" Trigger configuration. Do not use <tab> if you use https://github.com/Valloric/YouCompleteMe. +	let g:UltiSnipsExpandTrigger="<c-e>" +	let g:UltiSnipsJumpForwardTrigger="<c-t>" +	let g:UltiSnipsJumpBackwardTrigger="<c-q>" + +	" If you want :UltiSnipsEdit to split your window. +	let g:UltiSnipsEditSplit="vertical" + +	if has('persistent_undo')      "check if your vim version supports it +	set undofile                 "turn on the feature   +	set undodir=$HOME/.vim/undo  "directory where the undo files will be stored +	endif      +        ''; + +       vimrcConfig.vam.knownPlugins = pkgs.vimPlugins // customPlugins; +       vimrcConfig.vam.pluginDictionaries = [ +         { names = [ "undotree" "molokai" ]; } # wanted: fatih/molokai +         # vim-nix handles indentation better but does not perform sanity +         { names = [ "vim-addon-nix" ]; ft_regex = "^nix\$"; } +         { names = [ "vim-go" ]; ft_regex = "^go\$"; } # wanted: nsf/gocode +         { names = [ "vim-javascript" ]; ft_regex = "^js\$"; } +         { names = [ "vim-jsx" ]; ft_regex = "^js\$"; } +         { names = [ "UltiSnips" ]; ft_regex = "^go\$"; }  +       ]; + +    }) +  ]; +} diff --git a/jeschli/2configs/default.nix b/jeschli/2configs/default.nix new file mode 100644 index 000000000..7fb240951 --- /dev/null +++ b/jeschli/2configs/default.nix @@ -0,0 +1,66 @@ +{ config, pkgs, ... }: +with import <stockholm/lib>; +{ +  imports = [ +    ./vim.nix +    ./retiolum.nix +    { +      environment.variables = { +        NIX_PATH = mkForce "secrets=/var/src/stockholm/null:/var/src"; +      }; +    } +  ]; + +  nixpkgs.config.allowUnfree = true; + +  environment.systemPackages = with pkgs; [ +  #stockholm +    git +    gnumake +    jq +    parallel +    proot +    populate + +  #style +    most +    rxvt_unicode.terminfo + +  #monitoring tools +    htop +    iotop + +  #network +    iptables +    iftop + +  #stuff for dl +    aria2 + +  #neat utils +    file +    kpaste +    krebspaste +    mosh +    pciutils +    psmisc +   # q +   # rs +    tmux +    untilport +    usbutils +  #  logify +    goify + +  #unpack stuff +    p7zip +    unzip +    unrar + +    (pkgs.writeDashBin "sshn" '' +      ${pkgs.openssh}/bin/ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no "$@" +    '') +  ]; + +  krebs.enable = true; +} diff --git a/jeschli/2configs/retiolum.nix b/jeschli/2configs/retiolum.nix new file mode 100644 index 000000000..403300b30 --- /dev/null +++ b/jeschli/2configs/retiolum.nix @@ -0,0 +1,22 @@ +{ config, pkgs, ... }: + +{ + +  krebs.tinc.retiolum = { +    enable = true; +    connectTo = [ +      "prism" +      "gum" +      "ni" +      "dishfire" +    ]; +  }; + +  nixpkgs.config.packageOverrides = pkgs: { +    tinc = pkgs.tinc_pre; +  }; + +  environment.systemPackages = [ +    pkgs.tinc +  ]; +} diff --git a/jeschli/2configs/vim.nix b/jeschli/2configs/vim.nix new file mode 100644 index 000000000..f6c736fbc --- /dev/null +++ b/jeschli/2configs/vim.nix @@ -0,0 +1,373 @@ +{ config, lib, pkgs, ... }: + +with import <stockholm/lib>; +let +  out = { +    environment.systemPackages = [ +      (hiPrio vim) +      pkgs.python35Packages.flake8 +    ]; + +    environment.etc.vimrc.source = vimrc; + +    environment.variables.EDITOR = mkForce "vim"; +    environment.variables.VIMINIT = ":so /etc/vimrc"; +  }; + +  vimrc = pkgs.writeText "vimrc" '' +    set nocompatible + +    set autoindent +    set backspace=indent,eol,start +    set backup +    set backupdir=${dirs.backupdir}/ +    set directory=${dirs.swapdir}// +    set hlsearch +    set incsearch +    set mouse=a +    set ruler +    set pastetoggle=<INS> +    set runtimepath=${extra-runtimepath},$VIMRUNTIME +    set shortmess+=I +    set showcmd +    set showmatch +    set ttimeoutlen=0 +    set undodir=${dirs.undodir} +    set undofile +    set undolevels=1000000 +    set undoreload=1000000 +    set viminfo='20,<1000,s100,h,n${files.viminfo} +    set visualbell +    set wildignore+=*.o,*.class,*.hi,*.dyn_hi,*.dyn_o +    set wildmenu +    set wildmode=longest,full + +    set title +    set titleold= +    set titlestring=(vim)\ %t%(\ %M%)%(\ (%{expand(\"%:p:h\")})%)%(\ %a%)\ -\ %{v:servername} + +    set et ts=2 sts=2 sw=2 + +    filetype plugin indent on + +    set t_Co=256 +    colorscheme hack +    syntax on + +    au Syntax * syn match Garbage containedin=ALL /\s\+$/ +            \ | syn match TabStop containedin=ALL /\t\+/ +            \ | syn keyword Todo containedin=ALL TODO + +    au BufRead,BufNewFile *.hs so ${hs.vim} + +    au BufRead,BufNewFile *.nix so ${nix.vim} + +    au BufRead,BufNewFile /dev/shm/* set nobackup nowritebackup noswapfile + +    "Syntastic config +    let g:syntastic_python_checkers=['flake8'] +    let g:syntastic_python_flake8_post_args='--ignore=E501' + +    nmap <esc>q :buffer  +    nmap <M-q> :buffer  + +    cnoremap <C-A> <Home> + +    noremap  <C-c> :q<cr> +    vnoremap < <gv +    vnoremap > >gv + +    nnoremap <esc>[5^  :tabp<cr> +    nnoremap <esc>[6^  :tabn<cr> +    nnoremap <esc>[5@  :tabm -1<cr> +    nnoremap <esc>[6@  :tabm +1<cr> + +    nnoremap <f1> :tabp<cr> +    nnoremap <f2> :tabn<cr> +    inoremap <f1> <esc>:tabp<cr> +    inoremap <f2> <esc>:tabn<cr> + +    " <C-{Up,Down,Right,Left> +    noremap <esc>Oa <nop> | noremap! <esc>Oa <nop> +    noremap <esc>Ob <nop> | noremap! <esc>Ob <nop> +    noremap <esc>Oc <nop> | noremap! <esc>Oc <nop> +    noremap <esc>Od <nop> | noremap! <esc>Od <nop> +    " <[C]S-{Up,Down,Right,Left> +    noremap <esc>[a <nop> | noremap! <esc>[a <nop> +    noremap <esc>[b <nop> | noremap! <esc>[b <nop> +    noremap <esc>[c <nop> | noremap! <esc>[c <nop> +    noremap <esc>[d <nop> | noremap! <esc>[d <nop> + +    " search with ack +    let g:ackprg = 'ag --vimgrep' +    cnoreabbrev Ack Ack! + +    " copy/paste from/to xclipboard +    noremap x "_x +    set clipboard=unnamedplus +  ''; + +  extra-runtimepath = concatMapStringsSep "," (pkg: "${pkg.rtp}") [ +    pkgs.vimPlugins.ack-vim +    pkgs.vimPlugins.Gundo +    pkgs.vimPlugins.Syntastic +    pkgs.vimPlugins.undotree +    pkgs.vimPlugins.vim-go +    (pkgs.vimUtils.buildVimPlugin { +      name = "file-line-1.0"; +      src = pkgs.fetchFromGitHub { +        owner = "bogado"; +        repo = "file-line"; +        rev = "1.0"; +        sha256 = "0z47zq9rqh06ny0q8lpcdsraf3lyzn9xvb59nywnarf3nxrk6hx0"; +      }; +    }) +    ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let +      name = "hack"; +    in { +      name = "vim-color-${name}-1.0.2"; +      destination = "/colors/${name}.vim"; +      text = /* vim */ '' +        set background=dark +        hi clear +        if exists("syntax_on") +          syntax clear +        endif + +        let colors_name = ${toJSON name} + +        hi Normal       ctermbg=235 +        hi Comment      ctermfg=242 +        hi Constant     ctermfg=062 +        hi Identifier   ctermfg=068 +        hi Function     ctermfg=041 +        hi Statement    ctermfg=167 +        hi PreProc      ctermfg=167 +        hi Type         ctermfg=041 +        hi Delimiter    ctermfg=251 +        hi Special      ctermfg=062 + +        hi Garbage      ctermbg=088 +        hi TabStop      ctermbg=016 +        hi Todo         ctermfg=174 ctermbg=NONE + +        hi NixCode      ctermfg=148 +        hi NixData      ctermfg=149 +        hi NixQuote     ctermfg=150 + +        hi diffNewFile  ctermfg=207 +        hi diffFile     ctermfg=207 +        hi diffLine     ctermfg=207 +        hi diffSubname  ctermfg=207 +        hi diffAdded    ctermfg=010 +        hi diffRemoved  ctermfg=009 +      ''; +    }))) +    ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let +      name = "vim"; +    in { +      name = "vim-syntax-${name}-1.0.0"; +      destination = "/syntax/${name}.vim"; +      text = /* vim */ '' +        ${concatMapStringsSep "\n" (s: /* vim */ '' +          syn keyword vimColor${s} ${s} +            \ containedin=ALLBUT,vimComment,vimLineComment +          hi vimColor${s} ctermfg=${s} +        '') (map (i: lpad 3 "0" (toString i)) (range 0 255))} +      ''; +    }))) +    ((rtp: rtp // { inherit rtp; }) (pkgs.writeTextFile (let +      name = "showsyntax"; +    in { +      name = "vim-plugin-${name}-1.0.0"; +      destination = "/plugin/${name}.vim"; +      text = /* vim */ '' +        if exists('g:loaded_showsyntax') +          finish +        endif +        let g:loaded_showsyntax = 0 + +        fu! ShowSyntax() +          let id = synID(line("."), col("."), 1) +          let name = synIDattr(id, "name") +          let transName = synIDattr(synIDtrans(id),"name") +          if name != transName +            let name .= " (" . transName . ")" +          endif +          echo "Syntax: " . name +        endfu + +        command! -n=0 -bar ShowSyntax :call ShowSyntax() +      ''; +    }))) +  ]; + +  dirs = { +    backupdir = "$HOME/.cache/vim/backup"; +    swapdir   = "$HOME/.cache/vim/swap"; +    undodir   = "$HOME/.cache/vim/undo"; +  }; +  files = { +    viminfo   = "$HOME/.cache/vim/info"; +  }; + +  mkdirs = let +    dirOf = s: let out = concatStringsSep "/" (init (splitString "/" s)); +               in assert out != ""; out; +    alldirs = attrValues dirs ++ map dirOf (attrValues files); +  in unique (sort lessThan alldirs); + +  vim = pkgs.symlinkJoin { +    name = "vim"; +    paths = [ +      (pkgs.writeDashBin "vim" '' +        set -efu +        (umask 0077; exec ${pkgs.coreutils}/bin/mkdir -p ${toString mkdirs}) +        exec ${pkgs.vim}/bin/vim "$@" +      '') +      pkgs.vim +    ]; +  }; + +  hs.vim = pkgs.writeText "hs.vim" '' +    syn region String start=+\[[[:alnum:]]*|+ end=+|]+ + +    hi link ConId Identifier +    hi link VarId Identifier +    hi link hsDelimiter Delimiter +  ''; + +  nix.vim = pkgs.writeText "nix.vim" '' +    setf nix + +    " Ref <nix/src/libexpr/lexer.l> +    syn match NixID    /[a-zA-Z\_][a-zA-Z0-9\_\'\-]*/ +    syn match NixINT   /\<[0-9]\+\>/ +    syn match NixPATH  /[a-zA-Z0-9\.\_\-\+]*\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/ +    syn match NixHPATH /\~\(\/[a-zA-Z0-9\.\_\-\+]\+\)\+/ +    syn match NixSPATH /<[a-zA-Z0-9\.\_\-\+]\+\(\/[a-zA-Z0-9\.\_\-\+]\+\)*>/ +    syn match NixURI   /[a-zA-Z][a-zA-Z0-9\+\-\.]*:[a-zA-Z0-9\%\/\?\:\@\&\=\+\$\,\-\_\.\!\~\*\']\+/ +    syn region NixSTRING +      \ matchgroup=NixSTRING +      \ start='"' +      \ skip='\\"' +      \ end='"' +    syn region NixIND_STRING +      \ matchgroup=NixIND_STRING +      \ start="'''" +      \ skip="'''\('\|[$]\|\\[nrt]\)" +      \ end="'''" + +    syn match NixOther /[():/;=.,?\[\]]/ + +    syn match NixCommentMatch /\(^\|\s\)#.*/ +    syn region NixCommentRegion start="/\*" end="\*/" + +    hi link NixCode Statement +    hi link NixData Constant +    hi link NixComment Comment + +    hi link NixCommentMatch NixComment +    hi link NixCommentRegion NixComment +    hi link NixID NixCode +    hi link NixINT NixData +    hi link NixPATH NixData +    hi link NixHPATH NixData +    hi link NixSPATH NixData +    hi link NixURI NixData +    hi link NixSTRING NixData +    hi link NixIND_STRING NixData + +    hi link NixEnter NixCode +    hi link NixOther NixCode +    hi link NixQuote NixData + +    syn cluster nix_has_dollar_curly contains=@nix_ind_strings,@nix_strings +    syn cluster nix_ind_strings contains=NixIND_STRING +    syn cluster nix_strings contains=NixSTRING + +    ${concatStringsSep "\n" (mapAttrsToList (lang: { extraStart ? null }: let +      startAlts = filter isString [ +        ''/\* ${lang} \*/'' +        extraStart +      ]; +      sigil = ''\(${concatStringsSep ''\|'' startAlts}\)[ \t\r\n]*''; +    in /* vim */ '' +      syn include @nix_${lang}_syntax syntax/${lang}.vim +      unlet b:current_syntax + +      syn match nix_${lang}_sigil +        \ X${replaceStrings ["X"] ["\\X"] sigil}\ze\('''\|"\)X +        \ nextgroup=nix_${lang}_region_IND_STRING,nix_${lang}_region_STRING +        \ transparent + +      syn region nix_${lang}_region_STRING +        \ matchgroup=NixSTRING +        \ start='"' +        \ skip='\\"' +        \ end='"' +        \ contained +        \ contains=@nix_${lang}_syntax +        \ transparent + +      syn region nix_${lang}_region_IND_STRING +        \ matchgroup=NixIND_STRING +        \ start="'''" +        \ skip="'''\('\|[$]\|\\[nrt]\)" +        \ end="'''" +        \ contained +        \ contains=@nix_${lang}_syntax +        \ transparent + +      syn cluster nix_ind_strings +        \ add=nix_${lang}_region_IND_STRING + +      syn cluster nix_strings +        \ add=nix_${lang}_region_STRING + +      syn cluster nix_has_dollar_curly +        \ add=@nix_${lang}_syntax +    '') { +      c = {}; +      cabal = {}; +      haskell = {}; +      sh.extraStart = ''write\(Ba\|Da\)sh[^ \t\r\n]*[ \t\r\n]*"[^"]*"''; +      vim.extraStart = +        ''write[^ \t\r\n]*[ \t\r\n]*"\(\([^"]*\.\)\?vimrc\|[^"]*\.vim\)"''; +    })} + +    " Clear syntax that interferes with nixINSIDE_DOLLAR_CURLY. +    syn clear shVarAssign + +    syn region nixINSIDE_DOLLAR_CURLY +      \ matchgroup=NixEnter +      \ start="[$]{" +      \ end="}" +      \ contains=TOP +      \ containedin=@nix_has_dollar_curly +      \ transparent + +    syn region nix_inside_curly +      \ matchgroup=NixEnter +      \ start="{" +      \ end="}" +      \ contains=TOP +      \ containedin=nixINSIDE_DOLLAR_CURLY,nix_inside_curly +      \ transparent + +    syn match NixQuote /'''\([''$']\|\\.\)/he=s+2 +      \ containedin=@nix_ind_strings +      \ contained + +    syn match NixQuote /\\./he=s+1 +      \ containedin=@nix_strings +      \ contained + +    syn sync fromstart + +    let b:current_syntax = "nix" + +    set isk=@,48-57,_,192-255,-,' +  ''; +in +out diff --git a/jeschli/default.nix b/jeschli/default.nix new file mode 100644 index 000000000..7886fef49 --- /dev/null +++ b/jeschli/default.nix @@ -0,0 +1,9 @@ +_: +{ +  imports = [ +    ../krebs +    ./2configs +#    ./3modules +#    ./5pkgs +  ]; +} diff --git a/jeschli/source.nix b/jeschli/source.nix new file mode 100644 index 000000000..d5e14a8dc --- /dev/null +++ b/jeschli/source.nix @@ -0,0 +1,22 @@ +with import <stockholm/lib>; +host@{ name, secure ? false, override ? {} }: let +  builder = if getEnv "dummy_secrets" == "true" +              then "buildbot" +              else "jeschli"; +  _file = <stockholm> + "/jeschli/1systems/${name}/source.nix"; +in +  evalSource (toString _file) [ +    { +      nixos-config.symlink = "stockholm/jeschli/1systems/${name}/config.nix"; +      nixpkgs.git = { +        url = https://github.com/nixos/nixpkgs; +        ref = "f9390d6"; +      }; +      secrets.file = getAttr builder { +        buildbot = toString <stockholm/jeschli/2configs/tests/dummy-secrets>; +        jeschli = "/home/jeschli/secrets/${name}"; +      }; +      stockholm.file = toString <stockholm>; +    } +    override +  ] | 
